pythonのモジュールやクラスを動的に読み込ませる方法

更新:2017.11.26

目次

環境について

動的にモジュールを読み込ませるための準備

今回紹介する方法は、Python 3.3から追加された、importlibを使用します。

import importlib

2.x系では別途インストールする必要があります。

pip install importlib

実際に動的にモジュールをロードする

まずは、helloworld.pyのようなファイルを作成して、下記のコードを書いておきます。

def say():
    print('hello')

次に先ほど作成したhelloworld.pyを動的に読み込ませてみたいと思います。

import importlib
module = importlib.import_module('helloworld')
module.say()

そして実行すると

hello

と表示されます。

モジュール名を動的にしたので、メソッドも動的にしたい

先ほどのコードから、メソッド名をテキストにして実行してみたいと思います。

import importlib
module = importlib.import_module('helloworld')
method = getattr(module, 'say')
method()

こちらも先ほどと同様に

hello

と、表示されます。

単純に、moduleから「say」を取得して実行しているだけですが、この方法でメソッドも動的に実行できそうです。

注意点

このコードでは、モジュールが存在しないときや、メソッドが存在しないときの処理を書いていないので、適宜実装する必要があります。

import importlib

try:
    module = importlib.import_module('helloworld')
    method = getattr(module, 'say')
    method()
except ModuleNotFoundError:
    print('モジュールが見つからない')
except AttributeError:
    print('メソッドが見つからない')

try~exceptで例外をキャッチしてみた例です。

まとめ

WEBアプリケーションなどを作成していると、アクセスしてきたURLにクラスやメソッドを割り当てたいときがあるので、この方法を使うと、いちいちルーティングを書かなくてもいいので、便利ですね。

Python関連記事











これからブログなどのサイトを作りたいと思っている人は、お名前.comでのドメイン取得がオススメです。

■□━━ 急げ、ドメインは早い者勝ち! ━━□■
     ■お名前.com

アマゾンの2019年本屋大賞一覧

そして、バトンは渡された
ひと
ベルリンは晴れているか
熱帯
ある男

楽天市場のおすすめ商品一覧

お金2.0 新しい経済のルールと生き方 [ 佐藤航陽 ]
全部レンチン!やせるおかず 作りおき 時短、手間なし、失敗なし
「読む力」と「地頭力」がいっきに身につく 東大読書 [ 西岡 壱誠 ]