python动态类名

2024-05-29 06:50:16 发布

您现在位置: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文件,并以这种方式解析,因此它们将是字符串。。


Tags: 对象实例字符串nameobjparser示例object
3条回答

不要使用字符串:

parser = {}

class foo:
    pass


parser['foo'] = foo

obj = parser['foo']()
classmap = {
  'foo': foo
}

obj = classmap[parser['name']]()

答案如下:
Python dynamic class names

如果您知道在哪个模块中定义了类,则有一种更简单的方法来执行此操作,例如:

getattr(my_module, my_class_name)()

相关问题 更多 >

    热门问题