python-2.6 - 在python中使用__next__方法的问题

标签 python-2.6

我刚刚开始学习 python 并且正在阅读 classes 。

这是我为一个简单的可迭代类编写的代码:

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

任何人都可以阐明这种行为。我在 Mark Pilgrim 的《dive into python 3》一书中看到了一个使用 __next__ 的例子。方法 。甚至这个例子也没有在我的解释器上运行。
感谢您抽出时间来帮助我!

最佳答案

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

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

关于python-2.6 - 在python中使用__next__方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5982817/

相关文章:

python - Python2.6语法错误

python - Python 中的 XML 解析

python pip 包安装失败, 'fixing' : "unable to find vcvarsall.bat" 后出现 dllwrap 错误

python - typeerror '_csv.reader' 对象不可订阅

django - 使用 MAMP 在 Mac OS X 10.6 Snow Leopard 上安装 MySQLdb for Django

python - 在不导入类型 Foo 的情况下确定对象是否为 Foo 类型

python - 在一个共享对象中 boost python 多个模块

python - 带有 Tornado 的 JSONp 请求

python - 如何将lxml升级为python2.6

opencv - 是否有人在OpenCV2.1(pyOpenCV),Python和Maya2010上工作?