是否需要通过类的构造函数将值传递给实例变量?

我今天学习了python课。是否需要通过构造函数将值传递给变量?看来我可以定义一个类并将值直接传递给实例变量。


>>> class a():

        def _init_(self, food):

            self.food = food    

>>> A =a()

>>> A.food = 4

>>> print(A.food)

4


慕雪6442864
浏览 126回答 2
2回答

慕后森

构造函数就像一个普通的函数。您必须传递函数所需的尽可能多的变量,但您可以指定默认值,这样您就不必显式传递它们:class A():   def __init__(self, food):        self.food = fooda = A()# TypeError: __init__() missing 1 required positional argument: 'food'class A():   def __init__(self, food="default_food"):        self.food = fooda = A()print(a.food)# 'default_food'在您的示例中,您输入错误__init__(每侧有两个下划线,而不是一个,因此永远不会调用该方法)。

繁星coding

就像上面的答案中提到的那样,您在调用构造函数时输入错误。init 两边有两个下划线__init__我想补充的是您的代码工作的原因:您正在为A对象创建一个新属性 ' food '并为其分配值4。这意味着对于该类的新实例,该值将不存在。B = a()B.food = 4 \\Error如果您不定义__init__方法,则默认调用基类中的方法object。这就是原因,尽管 init 输入错误,但代码仍然有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python