如何恢复实例以使用 class 属性而不是阴影实例属性?
How to revert an instance to use the class attribute instead of the shadowing instance attribute?
如果我有一个 class 和它的两个实例:
class Foo:
var = 1
a = Foo()
b = Foo()
两个实例的 var
属性反映了我将为 Foo
设置的值:
Foo.var = 2
print(a.var) # 2
print(b.var) # 2
但是当我为 a
设置 var
时,a.var
不再是 "in sync" 和 Foo.var
:
a.var = 3
Foo.var = 4
print(a.var) # 3
print(b.var) # 4
我能否以某种方式"revert"这个而不创建新实例,以便a.var
再次反映Foo.var
的值?
明显的尝试(显然)不起作用,因为整数不是引用:
a.var = Foo.var
print(a.var) # 4
Foo.var = 5
print(a.var) # 5
只需删除实例属性,然后 a
将再次使用 Foo
中定义的 var
:
del a.var
Foo.var = 6
print(a.var) # 6
如果我有一个 class 和它的两个实例:
class Foo:
var = 1
a = Foo()
b = Foo()
两个实例的 var
属性反映了我将为 Foo
设置的值:
Foo.var = 2
print(a.var) # 2
print(b.var) # 2
但是当我为 a
设置 var
时,a.var
不再是 "in sync" 和 Foo.var
:
a.var = 3
Foo.var = 4
print(a.var) # 3
print(b.var) # 4
我能否以某种方式"revert"这个而不创建新实例,以便a.var
再次反映Foo.var
的值?
明显的尝试(显然)不起作用,因为整数不是引用:
a.var = Foo.var
print(a.var) # 4
Foo.var = 5
print(a.var) # 5
只需删除实例属性,然后 a
将再次使用 Foo
中定义的 var
:
del a.var
Foo.var = 6
print(a.var) # 6