zoukankan      html  css  js  c++  java
  • Python 第二十四章 面向对象 封装多态+super深度剖析

    封装多态

    # class Student:
    #
    #     def __init__(self,name,sex):
    #         self.name = name
    #         self.sex = sex
    #
    # liye = Student('李业','laddy_boy')
    # print(liye.sex)
    
    
    # 多态:
    # python 一个变量可以指向多种数据.
    # a = [1, 2, 3]
    # a = 'sdfasdf'
    '''
    java:
    int a = 123
    
    
    def func(int x):
        print(x)
    
    
    def func(x):
        print(x)
        
    '''
    
    
    
    
    # class A:
    #
    #     def login(self):
    #         print('登录')
    #
    #     def register(self):
    #         print('注册')
    #
    #     def func1(self):
    #         pass
    #
    #     def func2(self):
    #         pass
    #
    #
    # class B:
    #
    #     def login(self):
    #         print('登录')
    #
    #     def register(self):
    #         print('注册')
    #
    #     def func3(self):
    #         pass
    
    # A B互为鸭子.
    # 赵嘎:  1. 好记.
    # 虽然A,B两个类没有关系,但是我统一两个类中相似方法的方法名,在某种意义上统一的标准.
    
    # index ,index, index,
    
    # str
    # list
    # a = [1,2,3]
    # a = list('123')
    # print(a)
    
    # print('字体变色,但无背景色')
    # 固定的头尾: 33[         33[0m
    
    # 1;35;0m 具体调节的参数
    # print('33[1;32;0m字体变色,但无背景色 33[0m')  # 有高亮 或者 print('33[1;35m字体有色,但无背景色 33[0m')
    # print('33[1;33;0m字体变色,但无背景色 33[0m')  # 有高亮 或者 print('33[1;35m字体有色,但无背景色 33[0m')
    # print('33[1;45m 字体不变色,有背景色 33[0m')  # 有高亮
    # print('33[1;35;46m 字体有色,且有背景色 33[0m')  # 有高亮
    print('33[0;35;0m 字体有色,且有背景色 33[0m')  # 无高亮
    print('33[1;35;0m 字体有色,且有背景色 33[0m')  # 无高亮
    print('33[4;35;0m 字体有色,且有背景色 33[0m')  # 无高亮
    # print('33[5;35;0m 字体有色,且有背景色 33[0m')  # 无高亮
    
    

    super深度剖析

    # 严格按照mro的执行顺序去执行
    
    # class A:
    #     def f1(self):
    #         print('in A f1')
    #
    #     def f2(self):
    #         print('in A f2')
    #
    #
    # class Foo(A):
    #     def f1(self):
    #         super(Foo,self).f2()  # 按照self对象从属于类的mro的顺序,执行Foo类的下一个类.
    #         print('in A Foo')
    
    #
    # obj = Foo()
    # obj.f1()
    
    
    
    
    # class A:
    #     def f1(self):
    #         print('in A')
    #
    # class Foo(A):
    #     def f1(self):
    #         super(Foo,self).f1()
    #         print('in Foo')
    #
    # class Bar(A):
    #     def f1(self):
    #         print('in Bar')
    #
    # class Info(Foo, Bar):
    #     def f1(self):
    #         super(Info,self).f1()  #  按照self对象从属于类的mro的顺序,执行Info类的下一个类.
    #         print('in Info f1')
    # print(Info.mro())
    # # [Info'>, Foo'>, Bar'>, A',  'object'>]
    # obj = Info()
    # obj.f1()
    
    
    
    class A:
        def f1(self):
            print('in A')
    
    class Foo(A):
        def f1(self):
            super().f1()
            print('in Foo')
    
    class Bar(A):
        def f1(self):
            print('in Bar')  # 1
    
    class Info(Foo,Bar):
        def f1(self):
            super(Foo,self).f1()
            print('in Info f1')  # 2
    # [Info Foo Bar A]
    obj = Info()
    obj.f1()
    
    
    
  • 相关阅读:
    response输出随机图片、定时刷新网页
    @Transactional注解使用心得
    mybatis缓存(一,二级别)
    数据库四大特性及数据库隔离级别
    mybatis @SelectKey加于不加的区别
    MYSQL索引类型+索引方法
    页面缓存例子
    概率生成模型超越神经网络
    生成学习
    过程量与状态量
  • 原文地址:https://www.cnblogs.com/zhangshan33/p/11324711.html
Copyright © 2011-2022 走看看