Questions tagged «method-resolution-order»


4
新型类中的方法解析顺序(MRO)?
在《Nutshell的Python》(第2版)一书中,有一个使用 旧样式类的示例演示了如何以经典解析顺序解析方法,以及该方法 与新解析顺序有何不同。 我通过以新样式重写示例来尝试了相同的示例,但是结果与旧样式类所获得的结果没有什么不同。我用于运行示例的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。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.