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
在
A
中,count
是一个类变量,这意味着该类有一个变量的副本。类的实例继续获取该值在
__init__
中,您有A.count += 1
。这将直接修改类变量,而不创建实例变量。所以仍然只有一个count
副本,所有实例都会获取当前值如果改为将其更改为
self.count += 1
,则将获得预期的行为。最初,每个实例将从类中获取值。但是当执行self.count += 1
时,它将向count
添加1,然后将结果存储在实例专用的实例变量中。此后,实例将拥有自己的count
副本,该副本独立于类变量或类的其他实例中的实例变量相关问题 更多 >
编程相关推荐