gpt4 book ai didi

Python 策略模式 : Dynamically import class files

转载 作者:行者123 更新时间:2023-11-28 23:05:12 26 4
gpt4 key购买 nike

我正在尝试构建一个软件包来修复我的一个数据库中的任意数据不一致。我的设计包括两个类 - ProblemFix

问题是 SQL 查询存储为 .cfg 文件(例如 problem_001.cfg),修复程序存储为 Python 文件(例如 fix_001.py )。查询配置文件引用了 Python 文件名。每个修复器都有一个类 Fix,它继承自基类 BaseFix

`-- problems
|-- problem_100.cfg
|-- problem_200.cfg
|-- problem_300.cfg
`-- ...
`-- fixer
|-- __init__.py
| |-- fixers
| | |-- fix_100.py
| | |-- fix_200.py
| | |-- fix_300.py
| | |-- ...
| `-- ...
`-- ...

我想实例化 Problem 文件并以干净的方式为它们提供 Fix 对象。有没有办法在不将所有修复程序保存在同一个文件中的情况下做到这一点?

更新:

这是最终有效的代码(感谢 @Space_C0wb0y):

    fixer_name='fix_100'
self.fixer=__import__('fixer.fixers', globals(), locals(),
[fixer_name]).__dict__[fixer_name].Fix()

最佳答案

您可以使用内置的 __import__ 动态导入模块,它将模块名称作为字符串参数(参见 here)。这些模块必须在 module search path 中.

关于Python 策略模式 : Dynamically import class files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6484650/

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