我是python的新手,正在查看Django源代码。我遇到了utils.py
,并对这个迭代器方法的作用感到有些困惑:
def __iter__(self):
return iter(self.file)
这将用于什么?
答案 0 :(得分:4)
迭代文件会产生所有行,例如:
for line in open("foo.txt"):
print line
结果:
line1
line2
line3
如果foo.txt
是:
line1
line2
line3
(额外换行,因为line
包含文件的换行符。)
因此,遍历一个类的实例,该类的实例源自您发布了一个片段,结果迭代该实例的file
行。
答案 1 :(得分:2)
__iter__
时,会调用 iter()
。换句话说,如果你在幕后调用iter(a)
,python最终会默认调用a.__iter__()
。
对于这个特定的实现,它将返回file
成员的迭代器,无论它是什么。