从字符串名Python创建类对象
我有一个python模块,它调用同一模块中的多个其他类从字符串名Python创建类对象,python,class,eval,Python,Class,Eval,我有一个python模块,它调用同一模块中的多个其他类 class Main(object): def foo(self): return 'bar' def getClass(self, className, *args): return eval(className + "(%s)" % ",".join(args)) class A(object): def __init__(self, b): self._b = b class B(
class Main(object):
def foo(self):
return 'bar'
def getClass(self, className, *args):
return eval(className + "(%s)" % ",".join(args))
class A(object):
def __init__(self, b):
self._b = b
class B(object):
def __init__(self, c):
self._c = c
我想做的就是这样。在类Main中,我想通过只知道类名并传入创建该类所需的变量来生成一个类对象
我现在可以做条件if/else,但我想知道这是否可能。我想我也可以使用eval,但我听说那可能是邪恶的
建议?评论?我有一个引用多个子类的类,而不是为每种类型创建一个类,我认为这样做会更容易
谢谢你这里有几个问题。例如:。虽然被接受的答案使用eval,但提供了其他几种不使用eval的选项。eval可能不是正确的方法。如果您想在某些@classmethod中创建cls子类的实例,您可以在cls中查找