我正在尝试从__builtins__
if params.type in ["int", "long", "float"]:
vtype = getattr( __builtins__, params.type )
para = [vtype( para[0] )]
我收到以下错误:
Traceback (most recent call last):
File "message_ajax_handler.py", line 267, in get
vtype = getattr( __builtins__, subset[i] )
AttributeError: 'dict' object has no attribute 'int'
但是当我在命令行中测试时
vtype = getattr( __builtins__, 'int' )
它正在运作。我在哪里犯错误。
答案 0 :(得分:2)
您应该使用__builtin__
module代替:
import __builtin__
vtype = getattr(__builtin__, subset[i])
__builtins__
(带s
)可以是字典,也可以是模块,具体取决于上下文。该对象的存在实际上是一个实现细节。来自__builtin__
文档:
CPython实现细节:大多数模块的名称为
__builtins__
(注意's'
)作为其全局变量的一部分提供。__builtins__
的值通常是此模块或此模块的__dict__
属性的值。由于这是一个实现细节,因此Python的替代实现可能不会使用它。