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