可迭代对象(__iter__()和__next__())
2024-09-01 08:32:54
如果一个类想被用于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
最新文章
- Time-travel Models
- bzoj 1296: [SCOI2009]粉刷匠
- 微信小程序开发技巧及填坑记录
- git在windows命令行下使用
- WPF之通过EventTrigger修改模板中元素的属性
- iOS 网络/本地 图片 按自定义比例缩放 不失真 方法
- 3111: [Zjoi2013]蚂蚁寻路 - BZOJ
- Automake
- 给logstash 模板添加触发器
- ibatis学习之道:ibatis的<;[CDATA]>;dynamic属性跟#$的应用
- Android开发 旋转屏幕导致Activity重建解决方法(转)
- .net操作InI文件
- jmeter(二十二)内存溢出原因及解决方法
- Java Hash集合的equals()与hashCode() 方法
- 账号管理文件/etc/passwd和/etc/shadow
- 并发之lock的condition接口
- aop的使用
- Word中如何从某一页重新开始页码
- jQuery 1
- csc命令