Python类属性默认值

2024-06-17 08:16:32 发布

您现在位置:Python中文网/ 问答频道 /正文

class A():
    count = 0
    print(count)
    def __init__(self):
        A.count+=1
    def exclaim(self):
        print("I'm an A")
    @classmethod
    def kids(cls):
        print("A has", cls.count,"little objects.")

我的问题是我用“t1=a()”创建了一个对象。A.计数应该是1。我理解。然后,如果我用“t2=A()”创建第二个对象。我不明白为什么A.count=2。我认为当使用A()时,它会使计数回到默认值0


Tags: 对象selfaninitdefcountclasskids
1条回答
网友
1楼 · 发布于 2024-06-17 08:16:32

A中,count是一个类变量,这意味着该类有一个变量的副本。类的实例继续获取该值

__init__中,您有A.count += 1。这将直接修改类变量,而不创建实例变量。所以仍然只有一个count副本,所有实例都会获取当前值

如果改为将其更改为self.count += 1,则将获得预期的行为。最初,每个实例将从类中获取值。但是当执行self.count += 1时,它将向count添加1,然后将结果存储在实例专用的实例变量中。此后,实例将拥有自己的count副本,该副本独立于类变量或类的其他实例中的实例变量

相关问题 更多 >