在python中给出一些类定义,例如
class A(object):
def __init__(self):
self.x = 5
class B(object):
def __init(self):
self.x = 42
我希望实例化其中一个类,并将其名称作为字符串。例如,如果classname
是A
,那么我想做类似
myinstance = SOMETHING(classname)
应该对应
myinstance = A()
有没有办法在不使用eval eval
或地图的情况下执行此操作?如果没有,我会做以下事情:
map = {'A': A, 'B': B}
myinstance = map[classname]()
答案 0 :(得分:0)
考虑到Python命名方案基于地图,即使您使用eval
,也将使用某种或那种地图。
构建自己的地图是最合适的,但如果您的类存储在其他地方,您也可以使用globals()
或从模块中检索它:
import util_module
getattr(util_module, 'A') ()