类变量是可变的吗?

pin*_*aas 5 python oop static class object

如果我定义一个简单的类

class someClass():
    var = 1

x = someClass()
someClass.var = 2
Run Code Online (Sandbox Code Playgroud)

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

a = 1
b = a
a = 2
Run Code Online (Sandbox Code Playgroud)

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

基本上问题是如何x.var访问 someClass.var 它必须是不同的,然后在 python 中将两个变量设置为相等时使用。怎么了?

Uri*_*iel 3

var是 的静态类变量someClass

当您访问 getx.vary.varsome_other_instance.var,您正在访问相同的变量,而不是实例派生的变量(只要您没有将其作为属性专门分配给实例)。