| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- # class A:
- # pass
- # class B(A):
- # pass
- # class C(B):
- # pass
- # print(C.__mro__)
- # print(B.__mro__)
- # print(A.__mro__)
- class A(object):
- def test(self):
- print('from A')
-
- class B(A):
- def test(self):
- print('from B')
-
- class C(A):
- def test(self):
- print('from C')
-
- class D(B):
- def test(self):
- print('from D')
- class E(C):
- def test(self):
- print('from E')
- class F(D,E):
- def test(self):
- print('from F')
- f1=F()
- f1.test()
- print(F.__mro__) #只有新式才有这个属性可以查看线性列表,经典类没有这个属性
- # 新式类继承顺序:F->D->B->E->C->A
- # 经典类继承顺序:F->D->B->A->E->C
- # python3中统一都是新式类
- # pyhon2中才分新式类与经典类
- # 所有的父类的MRO列表遵循如下原则:
- # 子类会先于父类被检查;多个父类会根据它们在列表中的顺序被检查;如果对下一个类存在两个合法的选择,则选择第一个类。
|