如何将类名称作为字符串实例化?

时间:2014-08-11 18:42:57

标签: python

在python中给出一些类定义,例如

class A(object):
    def __init__(self):
        self.x = 5

class B(object):
    def __init(self):
        self.x = 42

我希望实例化其中一个类,并将其名称作为字符串。例如,如果classnameA,那么我想做类似

的事情
myinstance = SOMETHING(classname)

应该对应

myinstance = A()

有没有办法在不使用eval eval或地图的情况下执行此操作?如果没有,我会做以下事情:

map = {'A': A, 'B': B}
myinstance = map[classname]()

1 个答案:

答案 0 :(得分:0)

考虑到Python命名方案基于地图,即使您使用eval,也将使用某种或那种地图。

构建自己的地图是最合适的,但如果您的类存储在其他地方,您也可以使用globals()或从模块中检索它:

import util_module
getattr(util_module, 'A') ()