每次调用 class 构造函数时更新一个属性

Update an attribute each time the class constructor is invoked

我在 Python 中有这个 class。 (删除了不需要的部分)

class Spillebrett:

    def __init__(self, rader, kolonner):
        self._rader = rader
        self._kolonner = kolonner
        self._generasjonsnummer = 0

每次 运行 class 时,我都需要将 _generasjonsnummer 加 1。如果我尝试 _generasjonsnummer += 1 我得到一个错误。我试图制作一个 def addGenerasjonsnummer() 并在 init 中调用它,如下所示:

class Spillebrett:

    def __init__(self, rader, kolonner):
        self._rader = rader
        self._kolonner = kolonner
        self._generasjonsnummer = 0 
        addGenerasjonsnummer()

     def addGenerasjonsnummer():
        self._generasjonsnummer += 1 

但我无法调用 init 中的函数。我需要的是在每次启动 init 时将此数字更新为 +=1,我该怎么做?

如果您的 class 有一个每次调用构造函数时都会递增的属性,那么您应该首先解除它与任何实例的关联。也就是说,声明为class属性,outside__init__.

我会按照以下思路推荐一些内容:

In [625]: class Spillebrett:
     ...:     ctr = 0
     ...:     def __init__(self):
     ...:         print(Spillebrett.ctr)
     ...:         Spillebrett.ctr += 1
     ...:         

In [626]: Spillebrett()
0
Out[626]: <__main__.Spillebrett at 0x10b918da0>

In [627]: Spillebrett()
1
Out[627]: <__main__.Spillebrett at 0x109f1af98>

In [628]: Spillebrett()
2
Out[628]: <__main__.Spillebrett at 0x10b918470>