出于多种原因,我发现自己处于导入许多python模块并希望遍历模块中每个类的位置。在
from capacity_hdd_parser import CapacityHDDParser
from capacity_ssd_parser import CapacitySSDParser
from checksum_parser import ChecksumParser
.
.
.
每个解析器都继承自一个基类,并且有一个我想在每个解析器上调用的方法
^{pr2}$我的问题是,我有许多解析器要通过,我觉得必须有一种方法来动态迭代导入的类。每一个都要手工编写,这不仅是一件痛苦的事,而且会让我的代码在嘈杂声中更难看清。在
孩子们,不要在家里这样做:
你可以用更好的测试条件让它更安全一点。在
[更新]
Silas的声明性方法是安全的:
^{pr2}$更好的是,您可以将
PARSERS
dict替换为config file。在通过任何必要的方法定义
get_registered_parsers()
,包括黑魔法,例如setuptools入口点,或yapsy (plugin architecture),或ABCs(显式register()
函数)等如果在全局命名空间中不需要它们,可以使用
importlib.import_module
。在您可能还需要考虑将解析器类合并到单个包中。这会使这种方法更加干燥,也可能更像Python。在Python中,每个文件一个类通常过于冗余/冗长。在
相关问题 更多 >
编程相关推荐