关于python:类变量是可变的吗?

Are Class variables mutable?

本问题已经有最佳答案,请猛点这里访问。

如果我定义一个简单的类

1
2
3
4
5
class someClass():
    var = 1

x = someClass()
someClass.var = 2

这将使x.var等于2。这是令人困惑的,因为通常类似这样的事情:

1
2
3
a = 1
b = a
a = 2

将保持B完好无损作为b==1。那么,为什么类变量的情况不一样呢?区别在哪里?可以调用所有类变量可变吗?在某种程度上,类变量的工作更像是为a=[1]分配一个列表,并执行a[0]=2

基本上,问题在于x.var如何访问someclass.var。当两个变量在python中设置为相等时,它必须是不同的。发生什么事了?


varsomeClass的静态类变量。

当您伸出手去获取x.vary.varsome_other_instance.var时,您访问的是同一个变量,而不是实例派生的变量(只要您没有将它作为属性专门分配给实例)。