Обновляйте атрибут каждый раз, когда вызывается конструктор класса
У меня есть этот класс в 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>