【发布时间】:2016-09-29 18:11:38
【问题描述】:
我想在字典中注册我的班级的每个实例,键是参数之一。
这似乎可行,但 __del__ 函数失败。
这是代码:
class Test(object):
instances = {}
def __init__(self, id):
self.id = id
def launch(self):
print("launch")
Test.instances[self.id] = self
def __del__(self):
print("del")
del Test.instances[self.id]
这是我得到的不同输出:
>>> a = Test(25)
>>> del a
del
>>> a = Test(25)
>>> a.launch()
launch
>>> del a
>>>
我不明白为什么会这样,有人有建议吗?
【问题讨论】:
-
del和__del__彼此关系不大;__del__当然不是用于重载del运算符或类似的东西。 -
您可能希望将
weakref.WeakValueDictionary用于Test.instances。请参阅有关它的文档。
标签: python class python-3.x dictionary