我正在学习课程,但不明白这一点:
class MyClass:
var = 1
one = MyClass()
two = MyClass()
print(one.var, two.var) # out: 1 1
one.var = 2
print(one.var, two.var) # out: 2 1
我认为类变量可以被所有实例访问,为什么类变量不更新其所有实例?
对于所有人来说,它都不会改变,因为这样做:one.var = 2
,创建一个新的实例变量
与类变量同名,但仅适用于实例one
。
在那之后,one
首先会找到它的实例变量并返回它,而two
只会找到类变量并返回它。
要更改类变量,我建议两个选项:
-
创建一个类方法来更改类变量(我的偏好)
-
直接使用类来改变它
class MyClass:
var = 1
@classmethod
def change_var(cls, var):
cls.var = var
one = MyClass()
two = MyClass()
print(one.var, two.var) # out: 1 1
one.change_var(2) # option 1
print(one.var, two.var) # out: 2 2
MyClass.var = 3 # option 2
print(one.var, two.var) # out: 3 3
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)