类变量是可变的吗?

20 浏览
0 Comments

类变量是可变的吗?

这个问题已经有了答案

Class (static) variables and methods

类属性和实例属性有什么区别?

如果我定义一个简单的类

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 中设置两个变量相等时使用的方法不同。发生了什么?

admin 更改状态以发布 2023年5月21日
0
0 Comments

varsomeClass 的静态类变量。

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

0