1 """ 2 可迭代对象包括迭代器、序列(字符串、列表、元组)和字典。 3 可迭代对象:要么实现__iter__方法,返回该可迭代对象的迭代器类实例,要么实现了__getitem__方法,并且参数是从零开始的索引。 4 迭代器:实现了__iter__方法,返回迭代器本身,且实现了__next__方法,返回下一个元素,若没有元素抛出StopIteration异常。 5 """ 6 7 8 class MyList(object): # 定义可迭代对象类(__iter__方法) 9 def __init__(self, num): 10 self.data = num 11 12 def __iter__(self): 13 return MyListIterator(self.data) # 返回该可迭代对象的迭代器类实例 14 15 16 class MyListIterator(object): # 定义迭代器类(__iter__方法和__next__方法) 17 def __init__(self, data): 18 self.data = data 19 self.now = 0 20 21 def __iter__(self): 22 return self # 返回迭代器本身 23 24 def __next__(self): 25 while self.now < self.data: 26 self.now += 1 27 return self.now-1 # 返回下一个元素 28 raise StopIteration 29 30 31 def main(): 32 my_list = MyList(5) 33 print(type(my_list)) 34 35 my_list_iter = iter(my_list) 36 print(type(my_list_iter)) 37 38 for i in my_list: 39 print(i) 40 41 42 if __name__ == ‘__main__‘: 43 main() 44 45 """ 46 结果: 47 <class ‘__main__.MyList‘> 48 <class ‘__main__.MyListIterator‘> 49 0 50 1 51 2 52 3 53 4 54 """
原文:https://www.cnblogs.com/java-learning-xx/p/13965621.html