2016-10-22 63 views
-3

我有很多的經驗,面向​​對象的編程與的Java在這種情況下,它總是自動調用它的超類的構造函數在繼承類結構爲什麼蟒蛇沒有做到這一點,爲什麼??面向對象的編程和超類的構造函數

+0

因爲Python不是Java? :-D 更爲嚴肅的說明......我認爲這是一個優點,因爲它允許這樣的事情:如果你不想調用'super'構造函數,或者在你的類中進行一些初始化後調用它* *在調用'super'之前(這是Java不允許的,因爲必須在繼承類的第一行的構造函數中調用'super'構造函數......)不知道......你可以認爲這是一種提供更多靈活性? – BorrajaX

+2

我會問:爲什麼Java會這樣做?爲什麼? – furas

+0

Python不是Java。所有用戶定義的類的所有實例基本上只是可​​以插入屬性的字典。在完成任何初始化之前,所有用戶定義的類的所有實例幾乎完全相同;他們只是存儲尚未存儲的屬性的地方。 – Tinwor

回答

2

正如你在評論中看到的,你的問題實際上是一種觀點。請檢查 __init__ as a constructor?

我想說初始化是不是一個真正的構造,至少不會在你想想感。 Python的整個類模型有點不同,我想說這是有道理的。繼承更強調Python中的共享方法。

相關問題