在python中,我必须实例化某些类,在字符串中知道其名称,但是该类"存在"于动态导入的模块中。 下面是一个示例:
加载程序类脚本:
import sys
class loader:
def __init__(self, module_name, class_name): # both args are strings
try:
__import__(module_name)
modul = sys.modules[module_name]
instance = modul.class_name() # obviously this doesn't works, here is my main problem!
except ImportError:
# manage import error
一些动态加载的模块脚本:
class myName:
# etc...
我使用这种安排使dyn-loaded-modules中的某些预定义行为使加载程序类使用任何动态加载的模块...
您可以使用getattr
getattr(module, class_name)
访问课程。更完整的代码:
module = __import__(module_name)
class_ = getattr(module, class_name)
instance = class_()
如下所述,我们可以使用importlib
import importlib
module = importlib.import_module(module_