在学习静态方法的同时,我遇到了+ =的一些奇怪行为。
这是我的代码:
class Box:
totalMass = 0
def __init__(self, mass):
Box.totalMass += mass
def getMassconsumption():
return Box.totalMass
o1 = Box(2)
o2 = Box(10)
print(Box.getMassconsumption())
按预期,它将返回值:
12
但是,当我将第4行更改为:
Box.totalMass += 1
它返回值:
2
将增加的值增加到2、3、4等可以得到:
4
6
8
2的倍数,与输入无关。现在,我很确定自己不会理解练习本中的代码,也不会理解+ =在这种情况下的工作方式。 有人可以解释这里发生了什么吗?
答案 0 :(得分:2)
将代码更改为
Box.totalMass += 1
每次初始化Box对象时,都将+1添加到Box.totalMass的值中(而根本不使用输入的值)。由于您初始化了两个框o1和o2,因此将+2加到初始值0上,因此总值为2。
当你拥有
Box.totalMass += mass
您正在将质量值(在对象的初始化中定义)与总质量(以0开始)相加。