zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Vue Router路由组件传参
    Object.defineProperty()详解
    响应状态码
    ngnix端口转发
    查看端口占用情况
    nginx的查看、启动、停止、重载命令
    nginx的几个默认路径
    pm2的一些常用命令
    为什么要学习HTML?HTML会过时吗?
    48.MySQL数据库使用(二)
  • 原文地址:https://www.cnblogs.com/shijieli/p/9915810.html
Copyright © 2011-2022 走看看