使用字符串访问内置类

时间:2016-11-19 19:44:37

标签: python python-3.x constructor built-in

我想使用字符串从Python中检索内置类。通过反复试验,我找到了实现它的方法:

>>> __builtins__.__dict__['str']
<class 'str'>
>>> __builtins__.__dict__['int']
<class 'int'>

有更多的Pythonic方法吗?有更安全的方法吗?

2 个答案:

答案 0 :(得分:2)

最好通过vars()完成,而不是抓取模块__dict__。抓劫一般不是最好的主意,因为它们可能会发生变化;这就是为什么像vars这样的内置函数的原因;它会抓取您提供的对象的字典,

所以,而不是:

>>> __builtins__.__dict__['str']

使用:

>>> vars(__builtins__)['str']

具有相同的效果,同时又安全且可读性更高。

答案 1 :(得分:2)

你可以使用Python内置的eval()函数,它可以避免引用任何带有双下划线名称的东西(并且由于字符串来自可信来源,因此是安全的):

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:01:18) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
current directory: "C:\vols\Files\PythonLib\Stack Overflow"
>>> eval('str')
<class 'str'>
>>> eval('int')
<class 'int'>