学习python时遇到的迭代器问题

skyline@kaja 2015-11-17 03:26:30
我在学习迭代器的时候参考http://docs.pythontab.com/python/python2.7/classes.html#tut-generators中的迭代器源码,结果报错
class Reverse:
"""Iterator for looping over a sequence backwards."""
def __init__(self, data):
self.data = data
self.index = len(data)
def __iter__(self):
return self
def __next__(self):
if self.index == 0:
raise StopIteration
self.index = self.index - 1
return self.data[self.index]

当我创建一个rev实例时,即rev = Reverse('spam'),然后按照手册的做法,iter(rev)
for i in rev:
print i

结果报错,说没有next这个方法,很奇怪啊,手册是这么写的,于是我去掉了next前后的双下划线,居然可以正常输出,这是什么原因啊?
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
win7qqq 2015-12-10
  • 打赏
  • 举报
回复
楼主被文档坑了…这明明是python3的源码,python3里next方法前后有双划线,python2里就是next
skyline@kaja 2015-11-17
  • 打赏
  • 举报
回复
确实,那么为什么手册上一样的代码,他可以运行得出结果,我的提示没有next()这个方法?谢谢解答
  • 打赏
  • 举报
回复
双下划线表示是私有方法

37,720

社区成员

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

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