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.GeneratorType(来自types模块)。但是,您应该考虑一下为什么要这样做。通常最好避免显式类型检查并尝试迭代对象并查看它是否有效。

于 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 回答