Python in a Nutshell (2nd Edition)一書中有一個示例,它使用
舊樣式類來演示如何以經典解析順序解析方法以及
它是如何解析的與新訂單不同。
我通過用新樣式重寫示例來嘗試相同的示例,但結果與使用舊樣式類獲得的結果沒有什麼不同。我用來運行示例的python版本是2.5.2。下面是示例:
class Base1(object): def amethod(self): print "Base1" 類 Base2(Base1): 傳遞類 Base3(object): def amethod(self): 打印 "Base3" 類 Derived(Base2,Base3): 傳遞實例 = Derived() instance.amethod() print Derived.__mro__
調用 instance.amethod()
打印 Base1
,但根據我對 MRO 的理解輸出的新樣式的類應該是 Base3
。調用 Derived.__mro__
打印:
(
我不確定我對 MRO 的理解是否與 new樣式類不正確,或者我犯了一個我無法檢測到的愚蠢錯誤。請幫助我更好地了解 MRO。