1、说明:__getitem__\setitem可以迭代,它已经不被推荐了;建议使用__iter__\next。
2、python会先去检查__iter__\next然后再去检查__getitem__\__setitem__,也就是说__iter__优先。
例子:
#!coding:utf-8 #!python version 2.7 class mysqence(object): def __init__(self,start,stop): self.start=start self.stop=stop self.current=start def __iter__(self): return self def next(self): '''如果是python3.0环境,它已经不在用next了,而是把名字改成__next__''' current=self.current if current <= self.stop: self.current=self.current+1 return current else: raise StopIteration for x in mysqence(1,5): print x