2015-04-01 47 views
1

__init__在Python中的構造函數或方法?這是一個構造函數或方法

某處它說構造函數和它說方法的地方,這很令人困惑。

+0

在[5.3.1。初始化和編碼類](http://www.diveintopython.net/object_oriented_framework/defining_classes.html#d0e11720)_Dive進入Python_它說:「這是誘人的,但不正確的稱之爲構造函數」,並解釋了原因。 – martineau 2015-04-01 02:40:20

回答

6

將其稱爲方法是正確的。將其稱爲構造函數是不正確的,或者最多是不準確的。

具體而言,它是magic method。他們也被稱爲特殊方法,「dunders」和其他一些名字。

此特定方法用於定義對象的初始化行爲。它與構造函數不是很相似,它甚至不是第一個在新實例上調用的方法。

我們使用__init__來設置已經創建的實例的狀態。當我們使用語法A()來創建類A的實例時,它會自動調用,這就是爲什麼有人可能會鬆散地將其稱爲「構造函數」。但是__init__的責任與實例構造無關,真正的魔法在這方面更像一個構造函數。

0

除了@wim的回答之外,值得注意的是,該對象已被創建時間爲__init__,即__init__不是構造函數。此外,__init__方法是可選:您不必定義一個。最後,首先僅通過約定來定義方法,即其可以在任何其他方法之後被定義。

相關問題