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列表遵循如下原则:
子类会先于父类被检查;多个父类会根据它们在列表中的顺序被检查;如果对下一个类存在两个合法的选择,则选择第一个类。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM