慕工程0101907
2022-12-20 09:57:37
你好,我想__init__在 Python 的課堂上理解。我理解類是如何工作的,但我無法理解這里的一件事是代碼:class Computer: def __init__(self, name, cpu, ram, hdd, ssd): self.name = name self.cpu = cpu self.ram = ram self.hdd = hdd self.ssd = ssd def config(self): print("Configuration of computer is: ", self.name, self.cpu, self.ram, self.hdd, self.ssd )computer1 = Computer("HP ", "i7 ", "16gb ", "1TB ", "256GB")computer1.config()為什么以及如何自動Computer("HP ", "i7 ", "16gb ", "1TB ", "256GB")傳遞參數__init__(self, name, cpu, ram, hdd, ssd)?為什么我們將這個參數寫在類括號中而不是像這樣分開: computer1.__init__("HP ", "i7 ", "16gb ", "1TB ", "256GB")代碼如何理解必須將寫在 Computer 括號中的參數傳遞給__init__?
2 回答

PIPIONE
TA貢獻1829條經驗 獲得超9個贊
因為__init__
方法在Python中大致就是代表一個構造函數。當您調用Computer("HP ","i7 ","16gb ","1TB ","256GB")
Python 時,它會為您創建一個對象,并將其作為第一個參數傳遞給該__init__
方法。任何其他參數(超過您聲明的五個)也將作為參數傳遞——在這種情況下會引發異常,因為構造函數不期望它們。

www說
TA貢獻1775條經驗 獲得超8個贊
這就是 python 的工作原理。可能它是這樣設計的,因為一些類/結構是用純 C 編寫的。
例如。當你想實現自定義類并為其實現len()
功能時,你可以通過調用len(instance_of_your_class)
. 然后你所要做的就是__len__()
在你的類中實現方法。
另一方面,你有list
python 類。這個類是用 C 實現的,因為它必須非常快。然后當你調用len(instance_of_list)
interpreted 時會調用__len__
,這將調用 C 中的 equavilent 函數。
這種設計帶來了很多好處。一個例子是方法__getitem__
。您實施這樣您就可以使用instalce_of_class[2]
. 但它也使您能夠使用in
( if value in instance_of_class
)。
您可以閱讀有關此類方法的信息。在 python 術語中,它們是dunder
方法。
添加回答
舉報
0/150
提交
取消