如何調用超級構造函數?class A:
def __init__(self):
print("world")class B(A):
def __init__(self):
print("hello")B() # output: hello在我使用過的所有其他語言中,超級構造函數都是隱式調用的。如何在Python中調用它?我希望super(self)但這不管用。
3 回答

哆啦的時光機
TA貢獻1779條經驗 獲得超6個贊
一種方法是調用A的構造函數并傳遞self
作為一個論點,就像這樣:
class?B(A): ????def?__init__(self): ????????A.__init__(self) ????????print?"hello"
這種風格的優點是它非常清楚。它叫A的首字母。缺點是它不能很好地處理菱形繼承,因為您可能最終會兩次調用共享基類的初始化器。
另一種方法是使用Super(),正如其他人所展示的那樣。對于單繼承,它所做的與讓您調用父級的初始化項基本上是一樣的。
但是,Super()在底層要復雜得多,有時在多個繼承情況下可能會違反直覺。好的一面是,Super()可以用來處理鉆石形狀的繼承。如果你想知道超級()做什么的細節,我找到了關于超級()是如何工作的最好的解釋。
添加回答
舉報
0/150
提交
取消