我正在尝试使用静态列表创建一个类,该列表收集对象类的所有新实例。 我遇到的问题似乎是,一旦我尝试像使用整数一样使用列表,我就无法再使用魔术标记__del__
。
我的示例:
class MyClass(object):
count = 0
#instances = []
def __init__(self, a, b):
self.a = a
self.b = b
MyClass.count += 1
#MyClass.instances.append(self)
def __str__(self):
return self.__repr__()
def __repr__(self):
return "a: " + str(self.a) + ", b: " + str(self.b)
def __del__(self):
MyClass.count -= 1
#MyClass.instances.remove(self)
A = MyClass(1,'abc')
B = MyClass(2,'def')
print MyClass.count
del B
print MyClass.count
使用注释,我得到了正确的答案:
2
1
但是如果没有注释 - 包括现在的静态对象列表MyClass.instances,我得到了错误的答案:
2
2
看起来 MyClass 无法再次访问它的 __del__
方法了!这是为什么呢?