Python多继承MRO
在Python2.1中,采用了经典类,使用深度优先算法解析。
Python2.2中,引入了新式类,使用深度优先算法和广度优先算法。...那么这里的mro解析顺序是如何的呢?单纯看图很难得出答案。
C3线性算法的推导过程如下:
假设类C继承自父类B1,...Bn,类C的解析列表公式如下:
?...推导过程
我们用上面的那张图试一下推导出mro的解析顺序。...+ merge(L[O],L[O],L[O])
= [K1,A,B,C,O]
L(K2) = [K2,D,B,E,O]
L(K3) = [K3,D,A,O]
以上是K1,K2,K3的解析顺序...= [Z,K1,K2,K3,D,A,B,C] + merge(L[O]+L(E,O)+L(O))
= [Z,K1,K2,K3,D,A,B,C,E,O]
我们得出的最终答案为:Z的解析顺序