每次调用 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>
我在 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>