亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否需要通過類的構造函數將值傳遞給實例變量?

是否需要通過類的構造函數將值傳遞給實例變量?

慕雪6442864 2022-06-22 18:25:14
我今天學習了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__(每側有兩個下劃線,而不是一個,因此永遠不會調用該方法)。


查看完整回答
反對 回復 2022-06-22
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

就像上面的答案中提到的那樣,您在調用構造函數時輸入錯誤。init 兩邊有兩個下劃線__init__

我想補充的是您的代碼工作的原因:

  • 您正在為A對象創建一個新屬性 ' food '并為其分配值4。這意味著對于該類的新實例,該值將不存在。

    B = a()

    B.food = 4 \\Error

  • 如果您不定義__init__方法,則默認調用基類中的方法object。這就是原因,盡管 init 輸入錯誤,但代碼仍然有效。


查看完整回答
反對 回復 2022-06-22
  • 2 回答
  • 0 關注
  • 145 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號