对于python中可迭代对象和迭代器是两个概念,可迭代对象中的iter方法返回的是一个迭代器,迭代器内部调用next方法
其实这种这种设计方式,包含的一种设计模式,即是迭代模式。故而示例代码如下:
class myList: def __init__(self, items): self.items = items def __iter__(self): return myIterator(self.items) from collections.abc import Iterator class myIterator(Iterator): def __init__(self, items): self.index = 0 self.items = items def __next__(self): try: reItem = self.items[self.index] except IndexError: raise StopIteration self.index += 1 return reItem if __name__ == "__main__": myLi = myList(["pig", "dog", "cat"]) #for循环会调用迭代对象myLi的iter方法,iter返回是一个迭代器,迭代器内部会调用next方法,这个会抱出一个indexError异常必须捕获手动停止 for item in myLi: print(item)