Python 动态类名
我想根据一个字符串的值来创建一个类的实例,但遇到了问题。下面的 parser
对象是一个 dict
(字典),在这个例子中,我们假设有一个叫 foo
的类,而 parser['name']
的值是 'foo':
obj = parser['name']()
这样做会失败,报错信息是 TypeError: 'str' object is not callable
。但是,如果我这样做:
class foo:
def __init__(self():
print 'Hello'
如果我直接写 obj = foo()
,那就没问题,可以成功创建出正确的对象。而用 obj = type(parser['name'])()
也不行。
那该怎么解决呢? 更新:我其实不想用映射系统:这些类的名字是定义在 INI 文件里的,所以它们会是字符串形式的。
8 个回答
7
不要使用字符串:
parser = {}
class foo:
pass
parser['foo'] = foo
obj = parser['foo']()
15
16
classmap = {
'foo': foo
}
obj = classmap[parser['name']]()
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。