2012-05-20 41 views
0

這是更好奇的一個問題,而不是一個嚴重的問題:方法解析順序錯誤

我與多重繼承玩弄來到翻過這一點:

>>> class A(object): 
...  def __init__(self): print "A.__init__() called" 
... 
>>> class B(object, A): pass 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: Cannot create consisten method resolution 
order (MRO) for bases object, A 

我得到一個TypeError。但是,當我逆轉多重繼承的順序時:

>>> class B(A, object): pass 
>>> b = B() 
A.__init__() called 

它工作正常。我首先假設在A之前object的繼承創造了某種名稱歧義。有人願意解釋這裏發生了什麼嗎?

回答