【发布时间】:2016-06-02 03:03:42
【问题描述】:
我在理解 python 的 mro(方法解析顺序)时遇到了一些麻烦。 Python 从左到右运行。因此,根据我的理解,调用 M 的顺序应该是。 M、B、A、Z、X、Y
class X: pass
class Y: pass
class Z: pass
class A(X,Y): pass
class B(Y,Z): pass
class M(B,A,Z): pass
print(M.mro())
但是正确的调用顺序是。
[<class '__main__.M'>,
<class '__main__.B'>,
<class '__main__.A'>,
<class '__main__.X'>,
<class '__main__.Y'>,
<class '__main__.Z'>,
<class 'object'>]
谁能解释一下顺序并帮助我理解这一点。谢谢
【问题讨论】:
-
Python 从左到右运行:不,它没有。它实现了C3 linearization algorithm
标签: python class inheritance method-resolution-order