私はPythonに少し慣れていないので、Djangoのソースコードを調べていました。私は に出くわしutils.py
、この反復子メソッドが何をするかについて少し混乱しました:
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
何であれ、メンバーの反復子を返します。