Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python策略模式:动态导入类文件_Python_Strategy Pattern_Python Import - Fatal编程技术网

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
动态导入模块,它将模块名称作为字符串参数(请参阅)。这些模块必须在模块中