[英]Delete attribute from class instance python
我有示例類:
class A():
other_attribute = 2
def __init__(self):
setattr(A,"my_attribute",1)
a = A()
如何從實例中刪除my_attribute
和other_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_attribute
和my_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.