gpt4 book ai didi

python - 在python中循环导入类

转载 作者:行者123 更新时间:2023-11-28 21:18:39 25 4
gpt4 key购买 nike

由于多种原因,我发现自己处于导入许多 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.

我的问题是我有很多解析器要通过,我觉得必须有一种方法来动态迭代导入的类。必须手写每一个这些不仅是一件很痛苦的事情,它使我的代码的意图更难在噪音中看到。

最佳答案

如果您在全局命名空间中不需要它们,您可以使用 importlib.import_module

from importlib import import_module

for module_name, class_name in (('capacity_hdd_parser', 'CapacityHDDParser'),
('capacity_ssd_parser', 'CapacitySSDParser'),
('checksum_parser', 'ChecksumParser')):
data_returned = getattr(import_module(module_name), class_name)().parse(logset_path)
# Other processing here

您可能还想考虑将您的解析器类合并到一个包中。它会使这种方法更 DRY,也可能更 Pythonic。每个文件一个类在 Python 中通常过于冗余/冗长。

关于python - 在python中循环导入类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26186311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com