这个程序两次调用__iter__(self)的作用

vcgaoshou 2019-08-10 04:52:39
class MyNumbers:
def __iter__(self):
print ("iter")
self.a = 1
return self

def __init__(self):
print ("MyNumber")

def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration


myclass = MyNumbers()
myiter = iter(myclass)
for i in myiter:
print (i)

执行myiter = iter(myclass)语句时,调用了__iter__(),在第一次循环时,又调用了一次__iter__(),这2次调用__iter__()作用分别是什么?第一次我的理解是建立(初始化迭代器),那在第一次执行for循环时,调用__iter__()作用是什么呢?
...全文
145 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2019-08-11
  • 打赏
  • 举报
回复
for in结构不只是一个循环,它本身就有一次调用可迭代对象的__iter__方法来获得迭代器,再一步步调用__next__(循环),看下面 myclass = MyNumbers() for i in myclass: print (i) 你前面用iter函数无非是多生成了一次迭代器而已

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧