从字符串表示形式获取类

时间:2019-07-17 17:10:14

标签: python import

给定一个包含多个模块的包,我想编写一个从其名称(__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会引发异常,因此我对更清洁的解决方案。

0 个答案:

没有答案