1
A
回答
6
將其稱爲方法是正確的。將其稱爲構造函數是不正確的,或者最多是不準確的。
具體而言,它是magic method。他們也被稱爲特殊方法,「dunders」和其他一些名字。
此特定方法用於定義對象的初始化行爲。它與構造函數不是很相似,它甚至不是第一個在新實例上調用的方法。
我們使用__init__
來設置已經創建的實例的狀態。當我們使用語法A()
來創建類A
的實例時,它會自動調用,這就是爲什麼有人可能會鬆散地將其稱爲「構造函數」。但是__init__
的責任與實例構造無關,真正的魔法在這方面更像一個構造函數。
0
除了@wim的回答之外,值得注意的是,該對象已被創建時間爲__init__
,即__init__
不是構造函數。此外,__init__
方法是可選:您不必定義一個。最後,首先僅通過約定來定義方法,即其可以在任何其他方法之後被定義。
相關問題
- 1. Java說這個方法有一個構造函數名
- 2. 創造一個函數或方法
- 3. ponylang:在另一個構造函數中調用構造方法?
- 4. Java:一個構造函數或方法將接受數組或列表或...?
- 5. 將構造一個對象,但不是構造函數的方法
- 6. 使用構造函數鏈來完成這個構造的正確方法?
- 7. 快速退出方法或構造函數是否有好處?
- 8. 這個onCreate()方法是否總是在Foo()構造函數之後運行?
- 9. 在Java中,方法/構造函數聲明能否出現在另一個方法/構造函數聲明中?
- 10. 這個構造函數的語法是什麼?
- 11. 這些構造函數是否正確?
- 12. 傳遞一個方法,構造函數的參數
- 13. 構造一個通用對象(不是默認構造函數)
- 14. 如何構造一個需要從構造函數中傳遞值的方法?
- 15. 是否有可能將構造函數放在另一個構造函數的構造函數中?
- 16. 什麼是第一個,構造函數或帶{}?
- 17. 爲什麼PHP構造函數是一種方法?
- 18. 從另一個構造函數調用默認構造函數
- 19. 沒有參數的構造函數或參數構造函數
- 20. 爲什麼這個構造函數是這樣寫的?
- 21. 如何檢查一個Javascript函數是否是構造函數
- 22. 在構造函數中泄漏這個
- 23. 這個指針和構造函數
- 24. 用這個新的構造函數綁定一個參數?
- 25. 什麼類型的java構造函數是這些?構造函數鏈接?
- 26. 從另一個類的構造函數調用方法C++
- 27. 構造函數調用每一個方法調用WCF HTTPS
- 28. 我想調用另一個類的構造函數和方法
- 29. 傳遞一個方法調用構造函數,JAVA
- 30. 如何將一個方法添加到構造函數中?
在[5.3.1。初始化和編碼類](http://www.diveintopython.net/object_oriented_framework/defining_classes.html#d0e11720)_Dive進入Python_它說:「這是誘人的,但不正確的稱之爲構造函數」,並解釋了原因。 – martineau 2015-04-01 02:40:20