每次调用类构造函数时更新属性

时间:2017-10-22 10:17:56

标签: python class attributes class-attributes

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

class Spillebrett:

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

每次运行类时我都需要向_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,我该怎么做?

1 个答案:

答案 0 :(得分: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>