2011-06-26 9 views
2

データベースのいずれかで任意のデータの不一致を修正するソフトウェアパッケージを作成しようとしています。私のデザインには、ProblemFixという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() 

答えて

4

文字列引数としての名前(here参照)。モジュールはmodule search pathになければなりません。

関連する問題