2017-06-15 111 views
1

如果我定义了一个简单的类类变量是否可变?

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 acessing someClass.var它必须是不同的东西,然后在Python中设置两个变量相等时使用。发生什么事?

+2

现在设置'x.var = 3',看看会发生什么'someClass.var' –

+0

我知道,但那不是点 – pindakaas

+1

不,这*是*点。从本质上讲,当你做'SomeClass.var'和'someInstance.var' **不一定是同一件事**。 –

回答

1

var是一个静态类变量someClass

当你伸手拿到x.vary.varsome_other_instance.var,则需要访问同一个变量,不是一个实例得出一个(只要你没有明确其分配到该实例的属性)。

+1

那么当我使用x.var = 2时,我基本上在x中创建了一个新的变量,在这个实例中在someClass中隐藏了变量? – pindakaas

+0

@pindakaas宾果! – deceze

+0

@花生酱是。 – Uriel

相关问题