在一个类中若实现了iter方法并返回了自身,那么这个类创建的对象是可以迭代的。如下:

def __iter__(self):
    return self


如果想要可以迭代,就需要实现 iter()这个方法。用这个方法来返回一个迭代器对象,这样的话,就可以被for in这样的语句来处理,像处理序列一样来处理。
在定义中,一个迭代器对象要实现两个方法 iter()和next() (在python3中改成了 next()方法了)。


但既然迭代器对象的本职工作是来做next的,为什么还要实现iter()方法来返回它自己呢?

从语义上来说,是只需实现next()方法即可。
但是迭代器对象实现了_iter__()方法的好处就是支持返回它自己,就可以把它自己变成可迭代对象,那么迭代器对象就可以像可迭代对象一样,用for in这种方法来处理了。如下:

m = iter(obj)
for n in m:
   #do something.

这里的m就是由obj返回的一个迭代器对象,它由于实现了 iter(): return self,所以变成了和obj一样的可迭代对象,于是可以用for in来操作了。

最后修改:2020 年 02 月 23 日 03 : 31 PM
如果觉得我的文章对你有用,请随意赞赏