Python中的迭代性

Lak*_*sad 4 python iterator

我试图理解Python中的Iterability.

据我所知,__iter__()应该返回一个next()定义了方法的对象,该对象必须返回一个值或引发StopIteration异常.因此,我写了这个满足这两个条件的课程.

但它似乎没有用.怎么了?

class Iterator:
    def __init__(self):
        self.i = 1

    def __iter__(self):
        return self

    def next(self):
        if self.i < 5:
            return self.i
        else:
            raise StopIteration

if __name__ == __main__:
    ai = Iterator()
    b  = [i for i in ai]
    print b
Run Code Online (Sandbox Code Playgroud)

Hae*_*aes 9

你的迭代器类是正确的.你在这个声明中只有一个拼写错误:

if __name__ ==' __main__':
Run Code Online (Sandbox Code Playgroud)

'__main__'字符串中有一个前导空格.这就是为什么你的代码根本没有被执行的原因.