我今天学习了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
提交
取消