什么是“def __iter __(self):return iter(self.file)”for?

时间:2012-05-16 18:59:20

标签: python django

我是python的新手,正在查看Django源代码。我遇到了utils.py,并对这个迭代器方法的作用感到有些困惑:

def __iter__(self):
        return iter(self.file)

这将用于什么?

2 个答案:

答案 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成员的迭代器,无论它是什么。