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