码迷,mamicode.com
首页 > 编程语言 > 详细

补8.python之面向对象(通过__iter__,__next__实现迭代器协议)附带斐波那契数列实现

时间:2017-04-23 13:20:13      阅读:148      评论:0      收藏:0      [点我收藏+]

标签: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__实现迭代器协议)附带斐波那契数列实现

标签:python   next   tier   __iter__   __next__   斐波那契数列   

原文地址:http://suhaozhi.blog.51cto.com/7272298/1918569

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!