类变量是否可变?

时间:2017-06-15 09:16:39

标签: python class oop object static

如果我定义一个简单的类

class someClass():
    var = 1

x = someClass()
someClass.var = 2

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

a = 1
b = a
a = 2

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

基本上问题是x.var如何访问someClass.var它必须是不同的东西然后在python中设置两个变量相等时使用。发生了什么事?

1 个答案:

答案 0 :(得分:1)

varsomeClass的静态类变量。

当您伸出手来获取x.vary.varsome_other_instance.var时,您正在访问相同的变量,而不是实例派生的变量(只要您没有专门指定它)作为财产的实例)。