python定制类(以Fib类为例)
class Fib(object): def __init__(self): self.a, self.b = 0, 1 def __iter__(self): return self def __next__(self): #如果一个类想被用于for ... in循环,类似list或tuple那样,就必须实现一个__iter__()方法,该方法返回一个迭代对象, # 然后,Python的for循环就会不断调用该迭代对象的__next__()方法拿到循环的下一个值,直到遇到StopIteration错误时退出循环。 self.a, self.b = self.b, self.a+self.b if self.a > 100000: raise StopIteration() return self.a #要表现得像list那样按照下标取出元素,需要实现__getitem__()方法: #__getitem__()传入的参数可能是一个int,也可能是一个切片对象slice,所以要做判断 #也没有对负数作处理,所以,要正确实现一个__getitem__()还是有很多工作要做的。 #如果把对象看成dict,__getitem__()的参数也可能是一个可以作key的object,例如str。 #与之对应的是__setitem__()方法,把对象视作list或dict来对集合赋值。最后