我对Python有点新,并且正在浏览Django源代码。我碰到utils.py
,并有点无所适从这个迭代方法做:什么是“def __iter __(self):return iter(self.file)”?
def __iter__(self):
return iter(self.file)
什么会这样作?
我对Python有点新,并且正在浏览Django源代码。我碰到utils.py
,并有点无所适从这个迭代方法做:什么是“def __iter __(self):return iter(self.file)”?
def __iter__(self):
return iter(self.file)
什么会这样作?
通过文件收率迭代其所有行,例如:
for line in open("foo.txt"):
print line
结果:
line1
line2
line3
如果foo.txt
是:
line1
line2
line3
(额外的新行,因为line
包括文件的换行符)。
因此,遍历一个类的实例,该类的源代码在结果中发布了一个代码段,迭代该实例的file
的行。
__iter__
当它作为参数传递给iter()
时,会在某个对象上被调用。换句话说,如果你在幕后调用iter(a)
,Python默认最终会调用a.__iter__()
。
对于这个特定的实现,它会返回file
成员的迭代器,无论这可能是什么。
在这种情况下,mixin可能会被用作处理图像或其他非文本文件的类的基础。你为什么要遍历图像文件的每一行? – HighLife
@HighLife如果这是一个python文件接口的实现,我想这完全是为了实现\ __ iter__方法或多或少是强制性的。 – XORcist
python文件接口需要'__iter__'方法吗?我在哪里可以找到关于python文件界面的更多信息? – HighLife