可以用__next__
方法在类迭代器中实现条件吗?在类似下面的情况下,如果不满足条件,迭代器将返回None
,但我想省略这些,只接收实际值。例如:
class Foo2:
def __init__(self, _min=1, _max=5):
self._max = _max
self._min = _min
self.it = -1
def __iter__(self):
return self
def __next__(self):
self.it += 1
if self.it == self._max:
raise StopIteration
if self.it > self._min:
return self.it
fu = Foo2(_min=2, _max=5)
for x in fu:
# if x: -> can this be controlled by the __next__ method in the class?
print(x)
# prints
None
None
None
3
4
我想只打印实际值3
和4
,但不是在循环中测试None
,让类只发出这些值会更好。这可能吗?
1条答案
按热度按时间68bkxrlz1#
我不知道这是否是最正确的方法,因为我可能忽略了一些问题/缺点(如果有人能向我指出这些问题,我会很感激),但是对于这个特定的情况,如果感兴趣的是只忽略基于某些条件的值,递归调用
next
似乎可以做到这一点:在
for
循环中工作,并直接调用next
: