在__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__()。