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

yas*_*sar 8 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
Run Code Online (Sandbox Code Playgroud)

我猜__iter__()方法应该返回一个迭代器,迭代器应该有一个下一个方法吗?那么__next__()方法怎么样?是不是直接迭代一个类而没有用__iter__()方法返回另一个迭代器?

Dav*_*nan 12

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

  • 我认为你的意思是 `iterator.__next__()` 。:-) (3认同)

Cat*_*lus 6

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