• day26 多继承


     1 class A(object):
     2     def test(self):
     3         print('from A')
     4 
     5 class B(A):
     6     def test(self):
     7         print('from B')
     8 
     9 class C(A):
    10     def test(self):
    11         print('from C')
    12 
    13 class D(B):
    14     def test(self):
    15         print('from D')
    16 
    17 class E(C):
    18     def test(self):
    19         print('from E')
    20 
    21 class F(D,E):
    22     # def test(self):
    23     #     print('from F')
    24     pass
    25 f1=F()
    26 f1.test()
    27 print(F.__mro__) #只有新式才有这个属性可以查看线性列表,经典类没有这个属性
    28 
    29 #新式类继承顺序:F->D->B->E->C->A
    30 #经典类继承顺序:F->D->B->A->E->C
    31 #python3中统一都是新式类
    32 #pyhon2中才分新式类与经典类
    单继承 : 子类有的用子类 子类没有用父类
    多继承中,我们子类的对象调用一个方法,默认是就近原则,找的顺序是什么?
    经典类中 深度优先
    新式类中 广度优先
    python2.7 新式类和经典类共存,新式类要继承object
    python3 只有新式类,默认继承object
    经典类和新式类还有一个区别 mro方法只在新式类中存在
    super 只在python3中存在
    super的本质 :不是单纯找父类 而是根据调用者的节点位置的广度优先顺序来的

     

     1 class A(object):
     2     def func(self): print('A')
     3 
     4 class B(A):
     5     def func(self):
     6         super().func()
     7         print('B')
     8 
     9 class C(A):
    10     def func(self):
    11         super().func()
    12         print('C')
    13 
    14 class D(B,C):
    15     def func(self):
    16         super().func()
    17         print('D')
    18 
    19 b = D()
    20 b.func()    # A-C-B-D
    21 print(D.mro()) # D-B-C-A-object

  • 相关阅读:
    VMware设置共享文件夹
    非奇异阵
    ICP算法使用遇到的问题
    osgEarth编译的一些问题
    [OpenCV](1)安装与测试
    [PCL]1 PCL点云库安装
    【转载】:【C++跨平台系列】解决STL的max()与numeric_limits::max()和VC6 min/max 宏冲突问题
    matlab将多条曲线绘制在一起
    C++问题
    SLAM学习笔记(3)相关概念
  • 原文地址:https://www.cnblogs.com/shijieli/p/9915810.html
Copyright © 2020-2023  润新知