你对你想要做什么有点困惑。类型,也称为类,是对象,就像 python 中的所有其他东西一样。当您编写int
程序时,您引用了一个名为的全局变量int
,它恰好是一个类。您要做的不是“将字符串转换为类型”,而是按名称访问内置变量。
一旦你理解了这一点,解决方案就很容易看到了:
def get_builtin(name):
return getattr(__builtins__, name)
如果您真的想将类型名称转换为类型对象,请按照以下步骤操作。我曾经deque
在没有递归的情况下进行广度优先树遍历。
def gettype(name):
from collections import deque
# q is short for "queue", here
q = deque([object])
while q:
t = q.popleft()
if t.__name__ == name:
return t
else:
print 'not', t
try:
# Keep looking!
q.extend(t.__subclasses__())
except TypeError:
# type.__subclasses__ needs an argument, for whatever reason.
if t is type:
continue
else:
raise
else:
raise ValueError('No such type: %r' % name)