3

特定の変数がジェネレーターオブジェクトであるかどうかを確認する必要があります。???の代わりにリテラルジェネレータタイプを指定するにはどうすればよいですか?下?

def go():
    for i in range(999):
    yield i
la = go()
print repr(type(la))

<type 'generator'>

assert type(la) == ???
4

3 に答える 3

8

types.GeneratorTypetypesモジュールから)使用します。ただし、なぜこれを行っているのかを考える必要があります。通常は、明示的な型チェックを避けて、オブジェクトを反復処理して、それが機能するかどうかを確認することをお勧めします。

于 2012-08-21T19:48:37.370 に答える
2
import types
assert isinstance(la, types.GeneratorType)
于 2012-08-21T19:49:21.523 に答える
1

一般的にはそうではありません。__iter__との名前を持つ属性を探しますnext。両方の関数です。

于 2012-08-21T19:48:48.827 に答える