给定一个包含多个模块的包,我想编写一个从其名称(__name__
)获取特定类的方法,但是,尚不明确知道哪个模块包含所需的类。如果所需的类与调用函数位于同一模块中,则可以使用:
getattr(sys.modules[__name__], class_name)
如果我知道哪个模块包含所需的类,则可以使用:
import importlib
module = importlib.import_module('package_name.module_name')
my_class = getattr(module, class_name)
我的问题是否有类似的解决方案?我能想到的一种解决方案是(1)找到包中的所有模块,并(2)为每个模块调用getattr
,但是,如果失败,getattr
会引发异常,因此我对更清洁的解决方案。