由于多种原因,我发现自己处于导入许多python模块的位置,并且希望遍历模块中的每个类。在Python中循环导入的类
from capacity_hdd_parser import CapacityHDDParser
from capacity_ssd_parser import CapacitySSDParser
from checksum_parser import ChecksumParser
.
.
.
从基类中的每个解析器遗产和有我想每个解析器调用一个方法
parsers = [CapacityHDDParser, CapacitySSDParser, ChecksumParser]
for parser in parsers:
parser_instance = parser()
data_returned = parser_instance.parse(logset_path)
# Do a bunch of post processing here.
我的问题是,我有很多解析器经历,我觉得有有是一种动态遍历导入类的方法。不得不手写每一个这些不仅是屁股上的痛苦,它使得我的代码的意图在噪声中难以看清。
hack:'对于base_class .__子类中的解析器__()' – jfs 2014-10-03 20:33:00
如果您找不到完全不同的完成整体目标的方法,我建议您坚持使用当前的方法。它看起来乏味且容易出错,但元编程和操纵变量和标识符就好像它们是数据一样,可能更具风险。你目前的方法看起来简单易读,所以你可以坚持下去。虽然这看起来像[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – skrrgwasme 2014-10-03 20:33:04
@SLawson我最终的问题是,python的启动时间比运行解析器的时间要长,但这种讨论(我相信)超出了SO问题的范围。 – AlexLordThorsen 2014-10-03 20:37:46