2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個贊
因?yàn)?code>__init__方法在Python中大致就是代表一個構(gòu)造函數(shù)。當(dāng)您調(diào)用Computer("HP ","i7 ","16gb ","1TB ","256GB")
Python 時,它會為您創(chuàng)建一個對象,并將其作為第一個參數(shù)傳遞給該__init__
方法。任何其他參數(shù)(超過您聲明的五個)也將作為參數(shù)傳遞——在這種情況下會引發(fā)異常,因?yàn)闃?gòu)造函數(shù)不期望它們。

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個贊
這就是 python 的工作原理??赡芩沁@樣設(shè)計的,因?yàn)橐恍╊?結(jié)構(gòu)是用純 C 編寫的。
例如。當(dāng)你想實(shí)現(xiàn)自定義類并為其實(shí)現(xiàn)len()
功能時,你可以通過調(diào)用len(instance_of_your_class)
. 然后你所要做的就是__len__()
在你的類中實(shí)現(xiàn)方法。
另一方面,你有list
python 類。這個類是用 C 實(shí)現(xiàn)的,因?yàn)樗仨毞浅??。然后?dāng)你調(diào)用len(instance_of_list)
interpreted 時會調(diào)用__len__
,這將調(diào)用 C 中的 equavilent 函數(shù)。
這種設(shè)計帶來了很多好處。一個例子是方法__getitem__
。您實(shí)施這樣您就可以使用instalce_of_class[2]
. 但它也使您能夠使用in
( if value in instance_of_class
)。
您可以閱讀有關(guān)此類方法的信息。在 python 術(shù)語中,它們是dunder
方法。
添加回答
舉報