没有自我的类变量奇数

时间:2016-09-02 05:46:15

标签: python

我正在努力掌握关于类变量如何工作的想法。而我的知识类变量在类实例(对象)之间共享。 因此,在这个想法中,如果我更改类变量,则值应该更改为所有类实例... ......但是,情况似乎并非总是如此。

以下是一个简化示例:

 $money = new Money; //create the object for class Money

 $result=$money->Add($coin1, $coin2) //call the function

 echo 'You have: ' .$result . '<br>';

1 个答案:

答案 0 :(得分:2)

类变量在实例之间共享,直到您通过相同名称​​分配到实例变量为止。 (顺便说一句,这种行为对于在继承情况下声明默认值很有用。)

>>> class X:
...   foo = "foo"
...
>>> a = X()
>>> b = X()
>>> c = X()
>>> c.foo = "bar"
>>> id(a.foo)
4349299488
>>> id(b.foo)
4349299488
>>> id(c.foo)
4349299824
>>>

您的列表示例首先改变共享实例,然后将新值重新分配给c1.lista,但c2.lista仍然是共享实例。