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列表遵循如下原则:
子类会先于父类被检查;多个父类会根据它们在列表中的顺序被检查;如果对下一个类存在两个合法的选择,则选择第一个类。
posted @ 2018-10-14 23:21  Meanwey  阅读(2322)  评论(0编辑  收藏  举报