データベースのいずれかで任意のデータの不一致を修正するソフトウェアパッケージを作成しようとしています。私のデザインには、Problem
とFix
という2つのクラスがあります。Python戦略パターン:クラスファイルを動的にインポートする
問題は、.cfg
ファイル(例:problem_001.cfg
)として保存されたSQLクエリであり、フィクサーはPythonファイル(例:fix_001.py
)として保存されています。クエリ設定ファイルには、Pythonファイル名への参照があります。各フィクサーは基本クラスBaseFix
から継承する単一のクラスFix
を持っています。
`-- 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
オブジェクトとそれらを提供したいと思います。同じファイル内のすべてのフィクサーをキープすることなくそれを行う方法はありますか?
UPDATE:
これは(Space_C0wb0y @、おかげで)働いていた最終的なコードです:あなたは、動的モジュール - をとる組み込み__import__
を使用して、モジュールをインポートすることができ
fixer_name='fix_100'
self.fixer=__import__('fixer.fixers', globals(), locals(),
[fixer_name]).__dict__[fixer_name].Fix()