TypeError: iter() returned non-iterator of type 'MyIterable'

复制代码
 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
复制代码

 

posted @   Allen_Hao  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示