【发布时间】:2017-11-24 12:28:48
【问题描述】:
我有这个 python 代码。对于 X,结果是 TopTest: attr1=0, attr2=1,这很好,但对于 Y,结果是 SubTest: attr1=2, attr2=3,我不太明白。
基本上,我有一个类属性,它是一个计数器,它在__init__ method 中运行。当我启动 Y 时,计数器设置为 2,并且只有在分配属性之后。我不明白为什么它从2开始。子类不应该复制超类并且计数器从0开始吗?
class AttrDisplay:
def gatherAttrs(self):
attrs = []
for key in sorted(self.__dict__):
attrs.append('%s=%s' % (key, getattr(self, key)))
return ', '.join(attrs)
def __repr__(self):
return '[%s: %s]' % (self.__class__.__name__, self.gatherAttrs())
class TopTest(AttrDisplay):
count = 0
def __init__(self):
self.attr1 = TopTest.count
self.attr2 = TopTest.count+1
TopTest.count += 2
class SubTest(TopTest):
pass
X, Y = TopTest(), SubTest()
print(X)
print(Y)
【问题讨论】:
标签: python counter subclass init