我得到的錯誤: 類型錯誤:__init __()到底需要2個參數(3給出)多重繼承和調用超()
當試圖實例從類頂級的對象:
超( Middle1,self).__ init __(name,「middle」)
class Base(object):
def __init__(self, name, type):
pass
class Middle1(Base):
def __init__(self, name):
super(Middle1, self).__init__(name, "middle1")
class Middle2(Base):
def __init__(self, name):
super(Middle2, self).__init__(name, "middle2")
class Middle3(Base):
def __init__(self, name):
super(Middle3, self).__init__(name, "middle3")
class Top(Middle1, Middle2, Middle3):
def __init__(self):
super(Top, self).__init__("top")
# Here is where it produces the error
if __name__ == '__main__':
Top()
我對這個多重繼承問題不瞭解麼?
注:這是蟒蛇2.7
編輯
好了,所以我想,我覺得適合我的情況什麼的。這是等價的最終結果,我認爲它基本上是先強制深度,而不是調用super並調用每個__init__。
class Base(object):
def __init__(self, name, type):
pass
class Middle1(Base):
def __init__(self, name, type = "middle1"):
super(Middle1, self).__init__(name, type)
class Middle2(Base):
def __init__(self, name, type = "middle2"):
super(Middle2, self).__init__(name, type)
class Middle3(Base):
def __init__(self, name, type = "middle3"):
super(Middle3, self).__init__(name, type)
class Top(Middle1, Middle2, Middle3):
def __init__(self):
Middle1.__init__(self, "top")
Middle2.__init__(self, "top")
Middle3.__init__(self, "top")
# No errors anymore
if __name__ == '__main__':
Top()
這不是技術上的多重繼承。多類繼承是指一個類直接從多個父類繼承(並且在大多數編程語言中通常不支持)。 – apokryfos
您是否檢查過您正在執行的代碼文件是您在此顯示的代碼文件?因爲此代碼不會產生該錯誤... – dhke
你是對的。我編輯了代碼來顯示我的實際情況,現在它產生了這個錯誤。 – Esser420