首页 > 解决方案 > 如何恢复实例以使用类属性而不是阴影实例属性?

问题描述

如果我有一个类和它的两个实例:

class Foo:
    var = 1

a = Foo()
b = Foo()

这两个实例的var属性都反映了我将为其设置的值Foo

Foo.var = 2
print(a.var)  # 2
print(b.var)  # 2

但是,当我设置var为 just时aa.var不再与以下内容“同步” Foo.var

a.var = 3
Foo.var = 4
print(a.var)  # 3
print(b.var)  # 4

我可以在不创建新实例的情况下以某种方式“还原”它,以便a.var再次反映 的值Foo.var吗?

明显的尝试不起作用(显然),因为整数不是引用:

a.var = Foo.var
print(a.var)  # 4
Foo.var = 5
print(a.var)  # 5

标签: pythonattributeslanguage-lawyerinstance-variablesclass-attributes

解决方案


实例属性可以被删除,然后a将再次使用var定义在Foo

del a.var
Foo.var = 6
print(a.var)  # 6

推荐阅读