__iter__()|__iter__() 和 __next__()
要实现一个可迭代对象,比如一个类想被用于 for ... in
循环,类似 list
或 tuple
那样,就必须实现一个 __iter__()
方法,该方法返回一个迭代对象,然后,Python 的 for
循环就会不断调用该迭代对象的 __next__()
方法拿到循环的下一个值,直到遇到 StopIteration
错误时退出循环。
【__iter__()|__iter__() 和 __next__()】我们以斐波那契数列为例,写一个 Fib 类,可以作用于 for
循环:
class Fib(object):def __init__(self, max_value):
self.a, self.b = 0, 1 # 初始化两个计数器a,b
self.max_value = https://www.it610.com/article/max_value # 初始化最大值def __iter__(self):
return self # 实例本身就是迭代对象,故返回自己def __next__(self):
self.a, self.b = self.b, self.a + self.b # 计算下一个值if self.a> self.max_value: # 退出循环的条件
raise StopIteration()return self.a # 返回下一个值
我们用一个实例测试一下:
>>> fib = Fib(100)
>>> for i in fib:
print(i)1
1
2
3
5
8
13
21
34
55
89
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福