从Python3开始,要用__next__
http://www.python.org/dev/peps/pep-3114/
代码:
class MyIterator(object):
def __init__(self,step):
self.step=step
def next(self):
if self.step==0:
raise StopIteration
self.step-=1
return self.step
def __iter__(self):
return self
for el in MyIterator(5):
print(el)
运行结果:
Traceback (most recent call last):
File "..\pythonadvancedprogramming\advancedThree.py", line 19, in <module>
for el in MyIterator(5):
TypeError: iter() returned non-iterator of type 'MyIterator'
但是把 def next(self): 改为def __next__(self): 就没有问题了
本文介绍Python3中迭代器使用__next__方法的原因,并通过实例代码展示了如何正确实现自定义迭代器。文章解释了将next方法更改为__next__的重要性,以避免类型错误。

1399

被折叠的 条评论
为什么被折叠?



