编写一个迭代器,通过循环语句,实现对某个正整数的依次递减1,直到0.
from collections.abc import Iterator
class Descend(Iterator): # 继承Iterator抽象类
def __init__(self,N):
self.N=N
self.a=0
def __next__(self):
while self.a<self.N:
self.N-=1
return self.N
raise StopIteration
核心要点:
1 __nex__ 名字不能变,双下划线开头和结尾的函数是Python的特殊函数。它是实现定制的迭代逻辑关键所在
2 raise StopIteration:通过 raise 中断程序,必须这样写
调用
descend_iter=Descend(10)
for i in descend_iter:
print(i)
# 结果
9
8
7
6
5
4
3
2
1
0