如何从名字中获取int(),float(),dict()等callables?例如,我正在尝试将Python值保存到xml并将变量类型存储为字符串。有什么方法可以在从字符串转换回Python类型时从字符串中获取可调用内容吗?
通常我会做类似getattr(myobj,'str')的事情,但是没有模块可以用作这些内置转换函数的第一个参数。我也尝试了getattr(object,'str'),但这也不起作用,因为这些函数不是基础'对象'类型的一部分,只是语言的全局变量。
答案 0 :(得分:14)
通常我会做
getattr(myobj, 'str')
之类的事情,但是没有模块可以作为这些内置转换函数的第一个参数。
错了,有:
import __builtin__
my_str = getattr(__builtin__, "str")
(在Python 3.x中:import builtins
)
答案 1 :(得分:3)
您无需导入任何内容
vars(__builtins__)['dict']
vars(__builtins__)['float']
vars(__builtins__)['int']
等
答案 2 :(得分:0)
一种快捷方式是从__builtin__
模块调用它。例如
>>> import __builtin__
>>> __builtin__.__dict__['str'](10)
'10'