在__iter__函数中将使__next__
中的StopIteration raise的条件归
零,则可以循环迭代实例。
eg:
python3.3.5
class squares:
def __init__(self, start, stop):
self.flag = start - 1
self.value = self.flag
self.stop = stop
def __iter__(self):
self.value = self.flag
return self
def __next__(self):
if self.value == self.stop:
raise StopIteration
self.value += 1
return self.value
a = squares(1,5)
b = squares(1,5)
s = 0
while s<=41:
for i in a:
s= s + i
print(s)
>>>
1
3
6
10
15
16
18
21
25
30
31
33
36
40
45
到45时迭代器停止工作,实现了三圈循环。
可以得出:
迭代器走完一轮,抛出异常后,再次调用会先进行__iter__(),再进行__next__()。
python,通过__iter__/__next__得到一些类中迭代器的理解
原文:http://www.cnblogs.com/chengyixin/p/6354542.html