继承顺序



class
A(object): def test(self): print('from A') class B(A): # def test(self): # print('from B') pass class C(A): # def test(self): # print('from C') pass class D(B): pass # def test(self): # print('from D') class E(C): # def test(self): # print('from E') pass class J(A): pass class H(J): pass class F(D, E, H): # def test(self): # print('from F') pass f1 = F() f1.test() print(F.__mro__) # 只有新式才有这个属性可以查看线性列表,经典类没有这个属性


from A
(<class '__main__.F'>,         #开始

<class '__main__.D'>, <class '__main__.B'>,  #第一遍的中间节点

<class '__main__.E'>, <class '__main__.C'>,#第二遍的中间节点

<class '__main__.H'>, <class '__main__.J'>,#第三遍的中间节点

class '__main__.A'>, <class 'object'>)  #上一级


Process finished with exit code 0

 

棱形::先按继承的顺序查找中间的节点,最后中间的节点查完后,查找上一级

顺序:

假设左边的先继承;D-->C1--->C2---P1;    D--->C1----C2--->P2

原文地址:https://www.cnblogs.com/wuxi9864/p/9932972.html