在python中使用__next__方法的问题

时间:2011-05-12 18:43:06

标签: python-2.6

我刚刚开始学习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书中看到了一个例子。甚至这个例子都没有在我的翻译上运行。 谢谢你抽出时间来帮助我!

1 个答案:

答案 0 :(得分:45)

你正在使用Python 2.x,它永远使用.next()并且仍然这样做 - 只有Python 3将该方法重命名为.__next__()。 Python 2和3不兼容。如果您正在阅读3.x书,请自行使用Python 3.x,反之亦然。

对于Python 2.x,您可以将__next__()更改为next()