我找不到python遵循的规则来对以下类层次结构进行线性化:
class Type(type):
def __repr__(cls):
return cls.__name__
class O(object, metaclass=Type): pass
class F(O):pass
class E(O):pass
class D(O):pass
class C(D,F):pass
class B(E,D):pass
class A(B,C):pass
print(A.mro())
得到:
[A,B,E,C,D,F,O,<类'对象'>]
我被困在以下步骤:
L(A) : = [A] + 合并(L(B), L(C),[B,C])
L(A) : = [A] + 合并((B,E,D,O), (C,D,F,O) ,[B,C])
L(A) : = [A,B] + 合并((E,D,O), (C,D,F,O) ,[C])
而这里python选择去:
L(A) : = [A,B,E] + 合并((D,O), (C,D,F,O) ,[C])
而不是(我所期望的):
L(A) : = [A,B,C] + 合并((E,D,O), (D,F,O))
你能告诉我这里适用于选择 D 类而不是 C 类的规则(乍一看,流行率更高)。
谢谢