標籤:python next tier __iter__ __next__ 斐波那契數列
在前面講迭代器和產生器原理的時候,就已經說過__iter__方法和__next__方法的作用了,在這裡就不做重複描述了。
在這補一個實現迭代器協議的例子。
例1:(在沒有拋出StopIteration這個異常之前,這個迭代器會無限的產生值)
class c1:
def __init__(self,start):
self.start = start
def __iter__(self):
return self
def next(self):
self.start += 1
return self.start
o1 = c1(10)
for i in o1:
print i
例2:(拋出stopiteration異常之後)
class c1:
def __init__(self,start,stop):
self.start = start
self.stop = stop
def __iter__(self):
return self
def next(self):
if self.start >= self.stop:
raise StopIteration
n = self.start
self.start += 1
return n
o1 = c1(1,10)
for i in o1:
print i
輸出:
1
2
3
4
5
6
7
8
9
斐波那契數列:
class Fib:
def __init__(self):
self._a=0
self._b=1
def __iter__(self):
return self
def __next__(self):
self._a,self._b=self._b,self._a + self._b
return self._a
f1=Fib()
本文出自 “reBiRTH” 部落格,請務必保留此出處http://suhaozhi.blog.51cto.com/7272298/1918569
補8.python之物件導向(通過__iter__,__next__實現迭代器協議)附帶斐波那契數列實現