-2

我在 Python 中有这个课程。(去掉了不必要的部分)

class Spillebrett:

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

每次运行课程时,我都需要将 1 添加到 _generasjonsnummer。如果我尝试 _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中的函数。我需要的是每次启动初始化时将此数字更新为 +=1,我该怎么做?

4

1 回答 1

3

如果您的类具有每次调用构造函数时都会递增的属性,那么您应该首先将其与任何实例解除关联。换句话说,将其声明为类属性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>
于 2017-10-22T10:20:59.720 回答