What is the interface for python iterators?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Build a Basic Python Iterator
定义迭代器所需的方法是什么?例如,在下面的
1 2 3 4 5 6 7 8 9 10 | class Infinity(object): def __init__(self): self.current = 0 def __iter__(self): return self def next(self): self.current += 1 return self.current |
对于python 2.x,您所拥有的已经足够了,但是在python 3.x中,您需要定义函数
如果您需要与2.x和3.x兼容的代码,请同时包含这两者。
根据术语表,迭代器是使用
第4.5节-迭代器类型
您需要为容器定义:
1 | container.__iter__() #-> returns iterator |
对于迭代器,必须定义:
1 2 3 | iterator.__iter__() #-> returns self iterator.__next__() #-> returns next item iterator.next() #(for Python2 compatibility) -> returns self.__next__() |