class A(object):
_all = set()
def __new__(cls):
obj = super(A,cls).__new__(cls)
cls._all.add(obj)
return obj
class B(A):
pass
class C(A):
pass
b = B()
c = C()
これにより、すべてのインスタンスが作成され、に配置されA._all
ます。私が欲しいのは、のインスタンスをC
配置することですC._all
(Cの場合も同様です)。
私はこれを定義B
してC
好きにすることができます:
class B(A):
_all = set()
class C(A):
_all = set()
どちらがうまくいくでしょう。ただし、これはコードを繰り返すように感じます。次に_all
サブクラス化するときに追加するのを忘れA
たり、スペル_alll
を間違えたりすると、エラーのデバッグが難しくなる可能性があります。
これをうまくやるにはどうすればよいですか?