Pythonで動的にソースファイルをロードしてクラス切り替える方法

Pythonで別ファイルに定義されたモジュールやクラスを動的にロードして利用するにはimportlibモジュールのSourceFileLoaderメソッドを利用すると簡単に行うことができます。

例えばシステムによってロードするサブクラスを切り替えて利用すると言ったようなことが可能になります。

スポンサーリンク

動的にモジュールやクラスをロードして利用する

Pythonでは動的にモジュールやクラスをロードして利用するにはimportlibモジュールのSourceFileLoaderメソッドを利用することで実現できます。

スーパークラスのソース

今回はスーパークラスを継承したサブクラスを用意して、そのサブクラスを別ファイルにして動的にロードして利用します。

まずはスーパークラスのソースから。

動的にロードするサブクラスのソース

次に上記のスーパークラスをベースクラスとしたサブクラスのを用意します。

これで準備は完了です。

サブクラスを動的にロード

いよいよ、別ファイルにあるサブクラスを動的にロードします。

まずは動的にソースファイルをロードするために

とモジュールをロードします。

実際には

でソースファイルをロードして

「superClass」のサブクラスとしてロードされているものを順番に処理をすれば完成です。

上記のソースの実行結果は

になります。

「superClass」のサブクラスでないクラスは処理を対象外にしていますし、スーパークラスのメソッドも問題なくコールすることができます。

まとめ

この機能を上手く利用すれば汎用性が高くなり、他のシステムへの切り替えもサブクラスのソースだけを管理すればよいので見通しがよくなります。

以上、Pythonで動的にモジュールやクラスをロードして利用する方法でした。

タイトルとURLをコピーしました