我想在python中使用super擴展我的類的初始化。在下面的例子中,我想Class A
初始化一個參數乘以4,我希望這個參數通過繼承在類B中可用。然後,我想在B中進行另一個初始化,以取得相同的參數並將其乘以8。這第二個初始化沒有在A.可用使用'super'的例子在Python2.7中
class A():
def __init__(self,parameter):
self.initialize_parameter=4*parameter
class B(A):
def __init__(self,parameter): #note this parameter is intended to be the same parameter from Class A
self.another_parameter=parameter*8
super(B,self).__init__(parameter)
我一直在閱讀似乎表明,上面是正確的語法(我認爲),但在這個問題上的文檔的文件是相當混亂。以上代碼返回TypeError: must be type, not classobj
。
這是我第一次使用繼承,任何人都可以建議我做錯了什麼?
FWIW,更常見的做法是將__init__(如果您需要調用它)作爲子__init__中的第一個命令調用,而不是在最後執行。這樣,子初始化器就可以輕鬆地覆蓋或增加超級初始化器完成的工作。 –