我正在学习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
?
答案 0 :(得分:2)
__iter__
由iter
内置调用,也用于支持for ... in ...
循环中的迭代。