我有以下变量:
var = 'MyClass'
我想创建一个MyClass
基于变量的对象var
。类似的东西var()
。我怎样才能在 Python 中做到这一点?
我有以下变量:
var = 'MyClass'
我想创建一个MyClass
基于变量的对象var
。类似的东西var()
。我怎样才能在 Python 中做到这一点?
假设您也将类的模块作为变量,您可以执行以下操作,其中您想要的类“MyClass”驻留在模块“my.module”中:
def get_instance(mod_str, cls_name, *args, **kwargs):
module = __import__(mod_str, fromlist=[cls_name])
mycls = getattr(module, cls_name)
return mycls(*args, **kwargs)
mod_str = 'my.module'
cls_name = 'MyClass'
class_instance = get_instance(mod_str, cls_name, *args, **kwargs)
此函数将允许您从程序可用的任何模块获取任何类的实例,以及构造函数需要的任何参数。
>>> def hello():
... print "hello world"
...
>>> globals()["hello"]()
hello world