gpt4 book ai didi

python - 同一类的两个实例的类属性

转载 作者:太空狗 更新时间:2023-10-29 22:08:21 25 4
gpt4 key购买 nike

有这段代码:

class Sample:
variable = 2
object1 = Sample()
object2 = Sample()
print object1.variable # 2
print object2.variable # 2
object1.variable = 1
print object1.variable # 1
print object2.variable # 2 <- why not 1 too?

为什么 object2.variable 在赋值给类变量后不也是 1?

最佳答案

不要将它与静态变量混淆。在您的情况下,两个对象都有一个名称 variable 指向实例化后的 2 对象。现在,如果您将一个对象中的变量更改为 1,您所做的就是将 name 绑定(bind)到另一个对象,即 1 对象。 object2 中的名称仍然引用 2 对象。原始类对象未受影响,名称 variable 仍指向 2,因此 object3 = Sample() 将有一个 2 也绑定(bind)到 variable

解决这个问题的一种方法是像下面这样编写类:

>>> class Sample:
... variable=[2]
...
>>> object1 = Sample()
>>> object2 = Sample()
>>> print object1.variable[0]; print object2.variable[0]
2
2
>>> object1.variable[0]=1
>>> print object1.variable[0]; print object2.variable[0]
1
1

这是因为所有类都将名称 variable 绑定(bind)到相同的 muatable 对象,并且您可以操作该相同对象的内容(variable[0] )。

关于python - 同一类的两个实例的类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8688026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com