Python:+ =静态方法中的异常行为

时间:2018-10-08 16:06:20

标签: python class object static-methods

在学习静态方法的同时,我遇到了+ =的一些奇怪行为。

这是我的代码:

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的倍数,与输入无关。现在,我很确定自己不会理解练习本中的代码,也不会理解+ =在这种情况下的工作方式。 有人可以解释这里发生了什么吗?

1 个答案:

答案 0 :(得分:2)

将代码更改为

Box.totalMass += 1

每次初始化Box对象时,都将+1添加到Box.totalMass的值中(而根本不使用输入的值)。由于您初始化了两个框o1和o2,因此将+2加到初始值0上,因此总值为2。

当你拥有

Box.totalMass += mass

您正在将质量值(在对象的初始化中定义)与总质量(以0开始)相加。