为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕雪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 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信