相关疑难解决方法(0)

5409
推荐指数
22
解决办法
75万
查看次数

Python子类计数器

我有这个python代码。结果是TopTest: attr1=0, attr2=1X 很好,但结果是SubTest: attr1=2, attr2=3Y,我不太明白。

基本上,我有一个类属性,它是一个计数器,它在__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)                         
Run Code Online (Sandbox Code Playgroud)

python counter subclass init

5
推荐指数
1
解决办法
1558
查看次数

标签 统计

python ×2

counter ×1

init ×1

metaclass ×1

oop ×1

python-datamodel ×1

subclass ×1