【发布时间】:2022-01-20 17:08:22
【问题描述】:
有没有一种 Python 的方式来重置迭代器?这是我的想法,但我不确定如何在获取值时重置迭代器...
@property
def node_wave(self):
try:
wave = next(self._node_wave)
except StopIteration:
self._node_wave = iter(sorted(WAVELENGTH, key=lambda k: random.random())) #call setter here to reset the iterator
wave = next(self._node_wave)
return wave
@node_wave.setter
def node_wave(self):
self.node_wave = iter(sorted(WAVELENGTH, key=lambda k: random.random()))
【问题讨论】:
-
此代码确实在获取值时重置迭代器
self._node_wave。你到底对什么感到困惑?请edit 澄清。另外,您要解决的实际问题是什么?警惕XY problem。使用最少但完整的代码、期望的输出和不期望的输出创建 minimal reproducible example 会有所帮助。 -
setter 需要一个值,而
node_wave.setter缺少该值。你希望它做什么? -
糟糕,评论被隐藏在屏幕外。所以你想在那条线上调用setter?我想我明白了你想要做的事情,比如概括代码,但据我所知,使用 setter 没有任何意义。
标签: python python-3.x iterator getter-setter