类变量对于不同的实例具有不同的值
这个问题在这里已经有了答案:
只要您为实例指定名称,它就会获得一个影响类属性的实例属性。
您可以分配给类属性的唯一方法是分配给类的属性,而不是实例的属性,例如,如果您有实例,则需要执行以下操作:
x1.__class__.pi = 20
# If you're on Py3, or on Py2 and x1 is an instance of a new-style class,
# using type(x1) is slightly "nicer" than manually accessing dunder special
# variables, but unfortunately, it doesn't work on old-style class instances
# For new-style class instances though, the following is equivalent:
type(x1).pi = 20
如果您希望所有与x1
类型相同的实例显示更改。 这从__class__
(或通过type
函数)获取类本身,然后分配给它。
如果您意外创建了一个实例属性,并且想要再次公开该类属性,则可以执行:
del x1.pi
如果存在一个名为pi
的实例属性,则会成功,如果不存在,则会raise AttributeError
(如果它存在,它不会删除该类属性,您需要执行del x1.__class__.pi
/ del type(x1).pi
要做到这一点)。
上一篇: Class variable have different values for different instances