1

我找不到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 类的规则(乍一看,流行率更高)。

谢谢

4

0 回答 0