我今天學習了python課。是否需要通過構造函數將值傳遞給變量?看來我可以定義一個類并將值直接傳遞給實例變量。>>> class a(): def _init_(self, food): self.food = food >>> A =a()>>> A.food = 4>>> print(A.food)4
2 回答

慕后森
TA貢獻1802條經驗 獲得超5個贊
構造函數就像一個普通的函數。您必須傳遞函數所需的盡可能多的變量,但您可以指定默認值,這樣您就不必顯式傳遞它們:
class A():
def __init__(self, food):
self.food = food
a = A()
# TypeError: __init__() missing 1 required positional argument: 'food'
class A():
def __init__(self, food="default_food"):
self.food = food
a = A()
print(a.food)
# 'default_food'
在您的示例中,您輸入錯誤__init__(每側有兩個下劃線,而不是一個,因此永遠不會調用該方法)。

繁星coding
TA貢獻1797條經驗 獲得超4個贊
就像上面的答案中提到的那樣,您在調用構造函數時輸入錯誤。init 兩邊有兩個下劃線__init__
我想補充的是您的代碼工作的原因:
您正在為A對象創建一個新屬性 ' food '并為其分配值4。這意味著對于該類的新實例,該值將不存在。
B = a()
B.food = 4 \\Error
如果您不定義
__init__
方法,則默認調用基類中的方法object
。這就是原因,盡管 init 輸入錯誤,但代碼仍然有效。
添加回答
舉報
0/150
提交
取消