什么是迭代类方法next()和__next __()for,有什么区别?

时间:2011-08-28 19:02:33

标签: python iterator

我在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__()方法返回另一个迭代器?

2 个答案:

答案 0 :(得分:11)

PEP 3114iterator.next()重命名为iterator.__next__()。这是在3.0版中实现的。上面的链接包含所有血腥细节。

答案 1 :(得分:6)

next已在Python 3中重命名为__next__。至于它的作用,它应该返回下一个项目,或者如果没有更多,则引发StopIteration