我在python迭代器上有点迷失。我偶尔会使用它们,但我不记得自己创建它。我从某个地方读到我不记得在哪里,这样的代码:
class Foo(object):
def __init__(self):
self.something = "initial_value"
def __iter__(self):
return self
def next(self):
# I don't quite remember what was here :S
return self.something
我猜__iter__()
方法应该返回迭代器,迭代器应该有下一个方法吗?那么__next__()
方法呢?是不是直接迭代一个类而没有用__iter__()
方法返回另一个迭代器?
答案 0 :(得分:11)
PEP 3114将iterator.next()
重命名为iterator.__next__()
。这是在3.0版中实现的。上面的链接包含所有血腥细节。
答案 1 :(得分:6)
next
已在Python 3中重命名为__next__
。至于它的作用,它应该返回下一个项目,或者如果没有更多,则引发StopIteration
。