オブジェクト クラスのすべての新しいインスタンスを収集する静的リストを使用してクラスを作成しようとしています。私が直面している問題は、たとえば整数と同じようにリストを使用しようとするとすぐに、魔法のマーカーを使用できなくなったよう__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
__del__
MyClass がそのメソッドにアクセスできなくなったようです。どうして?