如何使对象既是 Python2 又是 Python3 迭代器?

How to make an object both a Python2 and Python3 iterator?

This Stack Overflow post 是关于使对象成为 Python.

中的迭代器

在Python 2 中,这意味着您需要实现一个__iter__() 方法和一个next() 方法。但是在Python 3中,你需要实现一个不同的方法,而不是next()你需要实现__next__().

如何创建一个在 Python 2 和 3 中都是迭代器的对象?

只要给它__next__next方法;一个可以是另一个的别名:

class Iterator(object):
    def __iter__(self):
        return self

    def __next__(self):
        # Python 3
        return 'a value'

    next = __next__  # Python 2