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
,我可能很难调试错误。
我该如何做好这件事?