所以我一直在對Python 2.7的精彩世界進行一些研究。多重繼承和MRO,我在閱讀時一直在嘗試不同的例子,並且遇到了一些讓我難以理解的東西。Python 2.7 MRO的行爲很奇怪
所以,你有你的經典鑽石MI例如:
class A:
def __init__(self):
print "A"
class B(A):
pass
class C(A):
def __init__(self):
print "C"
class D(B, C):
pass
instance = D()
在我讀過的所有MRO資源,這個例子應該有DBCA的MRO所以初始化d應打印「C」,而是它打印「A」。奇怪的是,當我將A,B,C或D的定義更改爲類似int
之類的子類時,它給了我打印「C」的預期行爲
爲什麼類結構的MRO的行爲依賴於基類是一個原始類型?這是一個錯誤?