1 class MyIterable: 2 def __init__(self): 3 self.data = [1, 2, 3] 4 5 def __getitem__(self, index): 6 return self.data[index] 7 8 def __iter__(self): 9 return MyIterator(self.data) 10 11 12 class MyIterator: 13 def __init__(self, data): 14 self.data = data 15 self.index = 0 16 17 def __next__(self): 18 if self.index >= len(self.data): 19 raise StopIteration 20 value = self.data[self.index] 21 self.index += 1 22 return value 23 24 25 my_iterable = MyIterable() 26 27 # 使用 for 循环迭代对象 28 for item in my_iterable: 29 print(item) # 输出:1 2 3 30 # 多次迭代也会报错 31 for item in my_iterable: 32 print(item) # 输出:1 2 3 33 34 # 调用 iter() 函数获取迭代器对象 35 my_iterator = iter(my_iterable) 36 # __next__ 也不会抛StopIteration异常 37 print(next(my_iterator)) # 输出:1 38 print(next(my_iterator)) # 输出:2 39 print(next(my_iterator)) # 输出:3