zoukankan      html  css  js  c++  java
  • Python进阶-----类的继承顺序

      python的类可以继承多个类,如果继承多个类,那么其寻找方法的方式有:深度优先和广度优先

      基类或者父类继承了object类,那么该类就是新式类,否则便是经典类

      当类是经典类时,多继承情况下,会按照深度优先方法查找

      当类时新式类时,多继承情况下,会按照广度优先方法查找

     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__) #只有新式才有这个属性可以查看线性列表,经典类没有这个属性
    新式类继承顺序:F->D->B->E->C->A
    经典类继承顺序:F->D->B->A->E->C
    python3中统一都是新式类
    pyhon2中才分新式类与经典类
    所有的父类的MRO列表遵循如下原则:
    子类会先于父类被检查;多个父类会根据它们在列表中的顺序被检查;如果对下一个类存在两个合法的选择,则选择第一个类。
  • 相关阅读:
    JS和Flash相互调用
    xml的应用
    随机验证码
    模块 time
    第一天 注册成功
    我的第一篇博客
    git
    2018-02-27
    25
    建站之星
  • 原文地址:https://www.cnblogs.com/Meanwey/p/9788740.html
Copyright © 2011-2022 走看看