如果一个类想被用于for ... in循环,类似list或tuple那样,就必须实现一个__iter__()和__next__()方法,该方法返回一个迭代对象
然后,Python的for循环就会不断调用该迭代对象的__next__()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环

    class Fib(object):
def __init__(self):
self.a, self.b = 0, 1 # 初始化两个计数器a,b def __iter__(self):
return self # 实例本身就是迭代对象,故返回自己 def __next__(self):
self.a, self.b = self.b, self.a + self.b # 计算下一个值
if self.a > 100000: # 退出循环的条件
raise StopIteration()
return self.a # 返回下一个值 for n in Fib():
print(n)

  #输出:1
#输出:1
#输出:2
#输出:3
#输出:5
#输出:...
#输出:46368
#输出:75025

最新文章

  1. Time-travel Models
  2. bzoj 1296: [SCOI2009]粉刷匠
  3. 微信小程序开发技巧及填坑记录
  4. git在windows命令行下使用
  5. WPF之通过EventTrigger修改模板中元素的属性
  6. iOS 网络/本地 图片 按自定义比例缩放 不失真 方法
  7. 3111: [Zjoi2013]蚂蚁寻路 - BZOJ
  8. Automake
  9. 给logstash 模板添加触发器
  10. ibatis学习之道:ibatis的<[CDATA]>dynamic属性跟#$的应用
  11. Android开发 旋转屏幕导致Activity重建解决方法(转)
  12. .net操作InI文件
  13. jmeter(二十二)内存溢出原因及解决方法
  14. Java Hash集合的equals()与hashCode() 方法
  15. 账号管理文件/etc/passwd和/etc/shadow
  16. 并发之lock的condition接口
  17. aop的使用
  18. Word中如何从某一页重新开始页码
  19. jQuery 1
  20. csc命令

热门文章

  1. jq实现回车键事件
  2. varnish实现缓存加速
  3. Linux平台达梦数据库V7单实例安装方式之图形方式
  4. ACM课内练习_1
  5. Notepad++ 异常崩溃 未保存的new *文件列表没了怎么办?
  6. python-paramiko对远程服务器终端的操作
  7. SpringSession header/cookie/attribute存放 session id
  8. C语言结构选择语句
  9. go语言之数据类型和格式化输出
  10. idea实战技巧