谁实际上调用__iter__方法

时间:2016-05-23 02:44:22

标签: python

我正在学习python,刚开始阅读有关迭代器和迭代的内容,我已经阅读了this帖子和this两篇文章,试图解释这个概念。但是在阅读这个例子时。我在下面发布了

class zrange:
    def __init__(self, n):
        self.n = n

    def __iter__(self):
        return zrange_iter(self.n)

class zrange_iter:
    def __init__(self, n):
        self.i = 0
        self.n = n

    def __iter__(self):
        # Iterators are iterables too.
        # Adding this functions to make them so.
        return self

    def next(self):
        if self.i < self.n:
            i = self.i
            self.i += 1
            return i
        else:
            raise StopIteration()

现在上面的例子正在使用

>>> z = zrange(5)
>>> list(z)
[0, 1, 2, 3, 4]

我的问题是何时或谁调用 iter 方法?

我的下一个问题是添加def __iter__(self)的重点是什么 在班级zrange_iter

1 个答案:

答案 0 :(得分:2)

__iter__iter内置调用,也用于支持for ... in ...循环中的迭代。