https://www.liaoxuefeng.com/wiki/1016959663602400/1017590712115904
iter
如果一个类想被用于for…in 循环,类似list或者tuple那样,就必须实现一个iter()方法,该方法返回一个迭代对象,然后Python的for循环就会不断调用该迭代对象的next()方法拿到循环的下一个值,指导遇到StopIteration 错误时退出循环。
写一个Fib类,可以作用于for循环
class Fib(object):def __init__(self):self.a, self.b = 0,1 #初始化两个计数器a,bdef __iter__(self):return self #实例就是对象本身def __next__(self):self.a, self.b = self.b, self.a+ self.bif self.a > 100000:raise StopIteration()return self.a
使用:
>>> for n in Fib():... print(n)...11235...4636875025
getitem
如果要表现的像list那样按照下标取出元素,需要实现getitem()方法:
class Fib(object):def __getitem__(self,n):a, b = 1, 1for x in range(n):a,b = b,a+breturn a
…未完
