【发布时间】:2010-12-23 08:07:05
【问题描述】:
Python in a Nutshell (2nd Edition)一书中有一个例子使用
旧样式类,用于演示如何以经典解析顺序解析方法和
新订单有什么不同。
我通过用新样式重写示例来尝试相同的示例,但结果与使用旧样式类获得的结果没有什么不同。我用来运行示例的python版本是2.5.2。下面是示例:
class Base1(object):
def amethod(self): print "Base1"
class Base2(Base1):
pass
class Base3(object):
def amethod(self): print "Base3"
class Derived(Base2,Base3):
pass
instance = Derived()
instance.amethod()
print Derived.__mro__
调用instance.amethod() 打印出Base1,但根据我对具有新型类的MRO 的理解,输出应该是Base3。调用Derived.__mro__ 打印:
(<class '__main__.Derived'>, <class '__main__.Base2'>, <class '__main__.Base1'>, <class '__main__.Base3'>, <type 'object'>)
我不确定我对新样式类的 MRO 的理解是否不正确,或者我犯了一个我无法检测到的愚蠢错误。请帮助我更好地了解 MRO。
【问题讨论】:
标签: python method-resolution-order