【发布时间】:2013-08-26 14:27:30
【问题描述】:
我今天读了这个文档。有些事情让我很困惑。
http://www.python.org/download/releases/2.3/mro/
在证明Python 2.2的MRO打破单调性的例子中,
>>> class A(object): pass
>>> class B(object): pass
>>> class C(object): pass
>>> class D(object): pass
>>> class E(object): pass
>>> class K1(A,B,C): pass
>>> class K2(D,B,E): pass
>>> class K3(D,A): pass
>>> class Z(K1,K2,K3): pass
我认为 Python 2.2 将为 Z 提供线性化的结果是:['Z', 'K1', 'C', 'K2', 'B', 'E', 'K3', 'D', 'A', 'object'],但是,文档给出了L[Z,P22] = Z K1 K3 A K2 D B C E O
而且医生说,这个例子最初是由 Samuele Pedroni 在here 提供的,Samuele Pedroni 的回答和我的一样。
有什么我错过的吗?
【问题讨论】:
-
为什么你认为 Python 2.2 会给出不同的结果?你试过了吗?
-
@JeromeJ:我实际上留下了两个带有
mro标签的帖子出于某种原因。 :-) 如果没有至少 一些 个帖子仍在使用它,我无法创建同义词。
标签: python method-resolution-order