清除Python中的类变量

本问题已经有最佳答案,请猛点这里访问。

我有一个类,并创建了它的实例ab。我认为这两个实例指向相同的地址。

例如,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Foo:
    counter = 0
    def increment():
        counter += 1

a = Foo()
b = Foo()
for i in range(10):
    a.increment()
    b.increment()
    aa = a.counter
    bb = b.counter
    print(aa)
    print(bb)

我期待着aa = 10bb = 10。然而bb = 20在这一点上。我错过了什么?


如果你想使计数器特定于每个实例,你应该使它成为一个实例变量,并初始化它在__init__方法代替:

1
2
3
4
5
class Foo:
    def __init__(self):
        self.counter = 0
    def increment(self):
        self.counter += 1