Python策略模式:动态导入类文件
我正在尝试构建一个软件包来修复我的一个数据库中的任意数据不一致。我的设计包括两类-Python策略模式:动态导入类文件,python,strategy-pattern,python-import,Python,Strategy Pattern,Python Import,我正在尝试构建一个软件包来修复我的一个数据库中的任意数据不一致。我的设计包括两类-问题和修复 `-- problems |-- problem_100.cfg |-- problem_200.cfg |-- problem_300.cfg `-- ... `-- fixer |-- __init__.py | |-- fixers | | |-- fix_100.py | | |-- fix_200.py
问题
和修复
`-- problems
|-- problem_100.cfg
|-- problem_200.cfg
|-- problem_300.cfg
`-- ...
`-- fixer
|-- __init__.py
| |-- fixers
| | |-- fix_100.py
| | |-- fix_200.py
| | |-- fix_300.py
| | |-- ...
| `-- ...
`-- ...
问题是存储为.cfg
文件的SQL查询(例如problem\u 001.cfg
),修复程序存储为Python文件(例如fix\u 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
| | |-- ...
| `-- ...
`-- ...
我想实例化问题
文件,并以干净的方式为它们提供修复
对象。有没有一种方法可以在不保留同一文件中所有修复程序的情况下执行此操作
更新:
这是最后成功的代码(谢谢@Space\u C0wb0y):
您可以使用内置的
\uuuuuu import\uuuuu
动态导入模块,它将模块名称作为字符串参数(请参阅)。这些模块必须在模块中