从 class 个实例 python 中删除属性

Delete attribute from class instance python

我有例子class:

class A():
    other_attribute = 2
    def __init__(self):
        setattr(A,"my_attribute",1)

a = A()

如何从实例中删除 my_attributeother_attribute

PS。我编辑了代码以更好地解释问题。例如我有class,动态添加属性

class A():
    def __init__(self, attribute_name, attribute_value):
        setattr(A, attribute_name, attribute_value)

a = A("my_attribute", 123)

我创建了 my_attribute,例如 a,但后来我不再需要它了。但在其他情况下还有其他属性,我不想更改。

other_attributemy_attribute 不是实例的属性。它们是 class 上的属性。您必须从那里删除属性,或提供具有相同名称(和不同值)的实例属性来屏蔽 class 属性。

从 class 中删除属性意味着它们将不再适用于 任何 实例。

您不能 'delete' class 个别实例的属性。如果一个属性不被所有实例共享,不要让它们成为 class 个属性。

other_attribute 由 A 的所有实例共享,这意味着它是

的一部分
  A.__dict__ 

词典。如果您在构造函数中初始化属性,则可以为 class 的一个实例执行此操作:

class A:
  def __init__(self):
    self.attrib = 2
    self.attrib2 = 3

a = A()
print "Before " + str(a.__dict__)
del a.__dict__["attrib"];
print "After " + str(a.__dict__)

输出为:

Before {'attrib2': 3, 'attrib': 2}
After {'attrib2': 3}