Обновляйте атрибут каждый раз, когда вызывается конструктор класса

У меня есть этот класс в 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 каждый раз, когда я запускаю процесс init, как мне это сделать?

1 ответ

Решение

Если у вашего класса есть атрибут, который будет увеличиваться при каждом вызове конструктора, вам следует сначала отсоединить его от любого экземпляра. Другими словами, объявите его как атрибут класса, вне __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>
Другие вопросы по тегам