【发布时间】:2015-12-18 09:34:35
【问题描述】:
我想维护 A 和 B 对象的计数,B 是 A 的子类。所以计数应该特定于 A 和 B。例如,如果我通过构造函数创建 3 个 A 对象和 2 个 B 对象调用,A 的计数变为 3+2=5,但我想保留为 3(而不是用作 B 的子对象时)。请评论以下代码sn-p:
class A:
acount = 0 # class variable
def __init__(self, isFullA = True):
if (isFullA):
self.iamFullA = True
A.acount += 1
else:
self.iamFullA = False
def __del__(self):
if (self.iamFullA):
A.acount -= 1
class B(A):
bcount = 0 # class variable
def __init__(self, isFullB = True):
A.__init__(self,False)
if (isFullB):
self.iamFullB = True
B.bcount += 1
else:
self.iamFullB = False
def __del__(self):
if (self.iamFullB):
B.bcount -= 1
#MAIN
L=[]
for i in range(3):
L.append(A())
for i in range(2):
L.append(B())
print "A.acount = " + str(A.acount)
print "B.bcount = " + str(B.bcount)
输出是:
A.acount = 3
B.bcount = 2
【问题讨论】:
-
那么,您的问题是什么?如果您只想进行代码审查,请转到codereview.stackexchange.com。
-
if isinstance(self, A): A.acount += 1呢?
标签: python class class-variables subobject