在Python中清除类变量。

12 浏览
0 Comments

在Python中清除类变量。

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

例如,

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 = 10`和`bb = 10`。然而在这一点上,`bb = 20`。我错过了什么?

0
0 Comments

在Python中,类变量是在类的定义中声明的变量,它是类的所有实例共享的。然而,有时候我们希望计数器变量是每个实例特定的,而不是所有实例共享的。在这种情况下,如果我们错误地将计数器变量声明为类变量,则会导致问题。

问题的解决方法是将计数器变量声明为实例变量,并在__init__方法中初始化它。通过这样做,每个实例将拥有自己独立的计数器变量。以下是一个示例代码,演示了如何正确地声明和使用实例变量:

class Foo:
    def __init__(self):
        self.counter = 0
    def increment(self):
        self.counter += 1

在上面的代码中,__init__方法初始化了counter变量,并将其赋值为0。然后,increment方法可以通过self.counter来访问和修改该变量,以实现计数器的递增。

通过将计数器变量声明为实例变量,每个实例都将拥有自己独立的计数器,从而避免了类变量带来的问题。这种方式更加灵活和符合实际需求。

0