无法获得内置类型

时间:2014-01-17 11:04:01

标签: python attributes

我正在尝试从__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' )

它正在运作。我在哪里犯错误。

1 个答案:

答案 0 :(得分:2)

您应该使用__builtin__ module代替:

import __builtin__

vtype = getattr(__builtin__, subset[i])

__builtins__(带s)可以是字典,也可以是模块,具体取决于上下文。该对象的存在实际上是一个实现细节。来自__builtin__文档:

  

CPython实现细节:大多数模块的名称为__builtins__(注意's')作为其全局变量的一部分提供。 __builtins__的值通常是此模块或此模块的__dict__属性的值。由于这是一个实现细节,因此Python的替代实现可能不会使用它。