首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用__iter__的Python2vspython 3类

使用__iter__的Python2vspython 3类
EN

Stack Overflow用户
提问于 2017-01-07 17:47:16
回答 1查看 2.8K关注 0票数 1

我试图弄清楚如何使这个类在Python 3中工作,它在Python 2中工作,这是D.Beasley编写的生成器教程中的内容。我是Python的新手,我只是在网上学习教程。

Python 2

代码语言:javascript
复制
class countdown(object):
    def __init__(self, start):
        self.count = start
    def __iter__(self):
        return self
    def next(self):
        if self.count <= 0:
            raise StopIteration
        r = self.count
        self.count -= 1
        return r

c = countdown(5)

for i in c:
    print i,

Python 3,不工作。

代码语言:javascript
复制
class countdown(object):
    def __init__(self, start):
        self.count = start
    def __iter__(self):
        return self
    def next(self):
        if self.count <= 0:
            raise StopIteration
        r = self.count
        self.count -= 1
        return r

c = countdown(5)

for i in c:
    print(i, end="")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-07 17:49:05

迭代器的特殊方法从next重命名为Python 3中的__next__,以匹配其他特殊方法。

通过使用以下next的定义,您可以使它在两个版本上工作,而无需更改代码:

代码语言:javascript
复制
__next__ = next

因此,每个版本的Python都会找到它所期望的名称。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41524531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档