補8.python之物件導向(通過__iter__,__next__實現迭代器協議)附帶斐波那契數列實現

來源:互聯網
上載者:User

標籤: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__實現迭代器協議)附帶斐波那契數列實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.