补8.python之面向对象(通过__iter__,__next__实现迭代器协议)附带斐波那契数列实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了补8.python之面向对象(通过__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__实现迭代器协议)附带斐波那契数列实现的主要内容,如果未能解决你的问题,请参考以下文章
3/29 迭代器/生成器/生成器之yield的表达式形式/面向过程的编程思想
python Class: 面向对象高级编程 __iter__ 和 next()
8.python之面相对象part.6(反射&__call__,__setattr__,__delattr__,__getattr__)
33.Python面向对象类的专有方法__iter____getitem____getattr____call____new____init__
33.Python面向对象类的专有方法__iter____getitem____getattr____call____new____init__
33.Python面向对象类的专有方法__iter____getitem____getattr____call____new____init__