【问题标题】:clear out class variable in Python [duplicate]清除Python中的类变量[重复]
【发布时间】:2019-08-12 18:54:34
【问题描述】:

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

例如,

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 在这一点上。我错过了什么?

【问题讨论】:

  • 您的计数器变量是类变量而不是实例变量。您将使用 self 访问实例变量。 docs.python.org/2/tutorial/…
  • 您的代码不起作用:increment 不是类方法,counter 应该是 self.counter

标签: python class


【解决方案1】:

如果您打算使计数器特定于每个实例,则应将其设为实例变量并在 __init__ 方法中对其进行初始化:

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

【讨论】:

  • 我认为我们可以称其为经典副本并避免回答这个问题。
猜你喜欢
  • 2012-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 2011-01-06
  • 2011-04-08
相关资源
最近更新 更多