我對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