簡體   English   中英

從類實例python中刪除屬性

[英]Delete attribute from class instance python

我有示例類:

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

a = A()

如何從實例中刪除my_attributeother_attribute

PS。 我編輯了代碼以更好地解釋問題。 例如,我有類,它動態添加屬性

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

a = A("my_attribute", 123)

我在實例a創建了my_attribute ,但后來我不再需要它了。 但在其他情況下是其他屬性,我不想改變。

other_attributemy_attribute不是實例上的屬性。 它們是班級的屬性。 您必須從那里刪除屬性,或提供具有相同名稱(和不同值)的實例屬性來掩蓋類屬性。

從類中刪除屬性意味着它們在任何實例上不再可用。

您無法在各個實例上“刪除”類屬性。 如果所有實例都不共享屬性,請不要將它們設為類屬性。

other_attribute由A的所有實例共享,這意味着它是其中的一部分

  A.__dict__ 

字典。 如果在構造函數中初始化屬性,則可以為類的一個實例執行此操作:

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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM