gpt4 book ai didi

Python子类计数器

转载 作者:行者123 更新时间:2023-12-01 01:50:47 24 4
gpt4 key购买 nike

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

基本上,我有一个类属性,它是一个计数器,它运行在 __init__ method 中。 .当我启动 Y 时,计数器设置为 2,然后才分配属性。我不明白为什么它从 2 开始。子类不应该复制父类(super class)并且计数器从 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)

最佳答案

您明确访问和使用 TopTest.count ,并且您的子类将坚持这种明确性。您可能需要考虑使用 type(self).count相反,每个实例将使用它自己的类的变量,可以在每个子类中使用不同的变量。

为了让你的子类有自己的类变量,只需添加一个 count = 0对其定义:

class SubTest(TopTest):
count = 0

关于Python子类计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44678847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com