效果:实现斐波那契数列
优点:不需要 list 来存储,节省空间 ,能够控制数据生成的方式
class Fibo(object):
def __init__(self, all_num):
self.all_num = all_num
self.current_num = 0
self.a = 0
self.b = 1
# 如果想要一个对象成为 可迭代对象 必须实现 __iter__ 方法, 此刻 Classmate 可迭代
def __iter__(self):
# 返回一个对象的引用, 必须具备 __iter__ 方法和 __next__ 方法,
# 自生已具备__iter__,继续调用 __next__ 方法
# 将 Classmate 自生传入
return self
def __next__(self):
if self.current_num < self.all_num:
ret = self.a
self.a, self.b = self.b, self.a + self.b
self.current_num += 1
return ret
else:
# 抛出此异常,for循环会自动停止
raise StopIteration
fibo = Fibo(100)
for num in fibo:
print(num)