我想做的事的例子:
x = 123
TYPE_TO_CONVERT_TO = 'int'
intx = convert(x, TYPE_TO_CONVERT_TO)
答案 0 :(得分:5)
类型int
(和其他内置对象)位于特殊的命名空间(模块)中,您可以使用import builtins
对其进行访问。因此,您可以执行以下操作:
intx = getattr(builtins, TYPE_TO_CONVERT_TO)(x)
如果您还希望支持当前模块中可能定义的类型,则可以使用:
intx = (globals().get(TYPE_TO_CONVERT_TO) or getattr(builtins, TYPE_TO_CONVERT_TO))(x)
builtins
模块也可以使用__builtins__
来使用,但这是一个实现细节。正如Aran-Fey在评论中指出的那样,import builtins
是获取参考的正确方法。
答案 1 :(得分:0)
您还可以使用:
t = eval(TYPE_TO_CONVERT_TO)
t('123') # => 123
答案 2 :(得分:0)
您可以单独使用类型,因为它们在实现中包含__call__
。
def func(x, typ):
typ = eval(typ)
return typ(x)
func('12', 'list')
>>> ['1', '2']
func(1, 'str')
>>> '1'