20章プラグイン――依存性注入Plugins
制約
- 問題は、何らかの抽象化(手続き、関数、オブジェクトなど)を使用して分解される。
- これら抽象化の一部またはすべては、通常は事前にコンパイルされた独自のパッケージに物理的にカプセル化される。メインプログラムと各パッケージは独立にコンパイルされる。これらのパッケージはメインプログラムによって動的に読み込まれる。読み込みは通常は最初に行われるが、必須ではない。
- メインプログラムは動的に読み込んだパッケージの関数やオブジェクトを利用できるが、どの実装が使用されるかを事前に知る必要はない。メインプログラムの変更や再コンパイルを行うことなく、別の実装に切り替えが可能。
- 読み込むパッケージの指定は、プログラムの外で行われる。これは、設定ファイル、パス規則、ユーザ入力、その他実行時に読み込むコードを外部から指定するための仕組みを使用する。
プログラム
1 #!/usr/bin/env python 2 import sys, configparser, importlib.machinery 3 4 def load_plugins(): 5 config = configparser.ConfigParser() 6 config.read("config.ini") 7 words_plugin = config.get("Plugins", "words") 8 frequencies_plugin ...
Get プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.