我刚刚开始学习python并正在阅读有关课程的内容。
这是我为一个简单的可迭代类编写的代码:
class maths:
def __init__(self,x):
self.a=x
def __iter__(self):
self.b=0
return self
def next(self):
if self.b <= self.a:
self.b = self.b+1
return self.b-1
else:
raise StopIteration
x=maths(5)
for l in x:
print l
当我使用__next__
(自我)时,表示next()方法:
显示以下错误
Traceback (most recent call last):
File "class.py", line 20, in <module>
for l in x:
TypeError: instance has no next() method
任何人都可以阐明这种行为。我在使用__next__
方法的Mark Pilgrim潜入python 3书中看到了一个例子。甚至这个例子都没有在我的翻译上运行。
谢谢你抽出时间来帮助我!
答案 0 :(得分:45)
你正在使用Python 2.x,它永远使用.next()
并且仍然这样做 - 只有Python 3将该方法重命名为.__next__()
。 Python 2和3不兼容。如果您正在阅读3.x书,请自行使用Python 3.x,反之亦然。
对于Python 2.x,您可以将__next__()
更改为next()