使用帶參數(shù)的基類構(gòu)造函數(shù)方法聲明和初始化子類有什么好處:class BaseClass(object): def __init__(self, a, b): self.a = a self.b = bclass SubClass(BaseClass): def __init__(self, a, b, c, d): BaseClass.__init__(self, a, b) # or super(). self.c = c self.d = dnewSubClassInstance = SubClass("one", "two", "three", "four")完全不使用參數(shù),只是初始化如下:class BaseClass(object): def __init__(self): self.a = " " self.b = " "class SubClass(BaseClass): def __init__(self): self.c = " " self.d = " "newSubClassInstance = SubClass()newSubClassInstance.a = "one"newSubClassInstance.b = "two"newSubClassInstance.c = "three"newSubClassInstance.d = "four"還是僅僅取決于人們打算如何在程序中編寫和使用此代碼?不過,我主要問的是期望;例如,如果被要求在 Python 中創(chuàng)建這個特定任務(wù),一個人會比另一個人更好嗎?
1 回答

楊__羊羊
TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個贊
您絕對應(yīng)該在__init__
方法中實(shí)例化和設(shè)置您的類。當(dāng)類被(創(chuàng)建和)初始化時,如果可能,它應(yīng)該準(zhǔn)備好使用。這是人們對課堂的期望。
對于某些情況,例如,當(dāng)嘗試模仿不可變對象時,__init__()
調(diào)用后永遠(yuǎn)不應(yīng)更新值。初始化后更新也有懲罰,因?yàn)楦驴赡苄枰|發(fā)其他更改??紤]一個 GUI,其中一個輸入是正在繪制的窗口的大小。如果在 Window 首次出現(xiàn)后設(shè)置,則必須重新繪制。
此外,您的第二種方法在另一方面也很糟糕;你甚至沒有self.a
和self.b
之后的__init__()
電話,因?yàn)槟銖牟淮螂娫?code>BaseClass.__init__()。在繼承和覆蓋__init__()
.
您還應(yīng)該考慮將顯式調(diào)用替換BaseClass
為調(diào)用super()
(正如您在評論中所寫的那樣),因?yàn)檫@樣可以更好地處理多重繼承。
添加回答
舉報
0/150
提交
取消