2

私はPythonに少し慣れていないので、Djangoのソースコードを調べていました。私は に出くわしutils.py、この反復子メソッドが何をするかについて少し混乱しました:

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

これは何に使うのでしょうか?

4

2 に答える 2

4

ファイルを反復すると、そのすべての行が生成されます。次に例を示します。

for line in open("foo.txt"):
    print line

結果:

line1

line2

line3

場合foo.txt:

line1
line2
line3

line(ファイルの改行が含まれているため、余分な改行)。

そのため、ソースからスニペットを投稿したクラスのインスタンスを反復処理すると、そのインスタンスのfileの行を反復処理することになります。

于 2012-05-16T19:01:08.317 に答える
2

__iter__に引数として渡されたときに、オブジェクトで呼び出されますiter()。つまり、 を呼び出すとiter(a)、裏で python が最終的a.__iter__()にデフォルトで呼び出します。

この特定の実装では、それがfile何であれ、メンバーの反復子を返します。

于 2012-05-16T19:06:19.320 に答える