从'int'字符串获取int类型

时间:2011-09-13 14:02:23

标签: python

在Python中,给定字符串'int',我如何获得类型 int?使用getattr(current_module, 'int')不起作用。

4 个答案:

答案 0 :(得分:6)

int不是当前模块命名空间的一部分;它是__builtins__命名空间的一部分。因此,您可以在getattr上运行__builtins__

要验证它是一种类型,您只需检查它是否是type的实例,因为所有类型都是从它派生的。

>>> getattr(__builtins__, 'int')
<type 'int'>
>>> foo = getattr(__builtins__, 'int')
>>> isinstance(foo, type)
True

答案 1 :(得分:4)

通过这种方式,如果您期望一组有限的类型,您应该使用字典将名称映射到实际类型。

type_dict = {
   'int': int,
   'str': str,
   'list': list
}

>>> type_dict['int']('5')
5

答案 2 :(得分:1)

尝试使用eval()

>>>eval('int')
<type 'int'>

但要确保你给eval()的内容;这可能很危险。

答案 3 :(得分:1)

如果您不想使用eval,您只需在dict中存储从字符串到类型的映射,然后查找:

>>> typemap = dict()
>>> for type in (int, float, complex): typemap[type.__name__] = type
...
>>> user_input = raw_input().strip()
int
>>> typemap.get(user_input)
<type 'int'>
>>> user_input = raw_input().strip()
monkey-butter
>>> typemap.get(user_input)
>>>