PythonでSingletonパターンを実現する方法

Pythonでデザインパターンの「Singleton」を実現するにはクラスコンストラクターの「__new__()」でインスタンス生成を制御する必要があります。

Singleton パターン(シングルトン・パターン)とは、オブジェクト指向のコンピュータプログラムにおける、デザインパターンの1つで、そのクラスのインスタンスが1つしか生成されないことを保証するデザインパターンのことでです。
スポンサーリンク

PythonでSingletonパターンを実現する

PythonでSingletonパターンを実現するにはクラスコンストラクターの「__new__()」で初めてのインスタンス生成かどうかチェックして、初めての場合のみ新規にインスタンスを生成して返すようにします。

インスタンスとはオブジェクト指向言語においては、多くの場合クラスと呼ばれるものを元に作成したオブジェクトの実体のことです。

以下が具体的な実装方法です。

上記で__new__()メソッド内で一度目のインスタンスが生成されているかどうか

でチェックし、されてなければ

で生成します。

あとは呼ばれるたびに

該当クラスのインスタンスを返すだけです。

上記のクラスが本当に1つしか生成されていないか確認するコードは

で確認でき、実行結果は

になり、s1のnameを変更するとs2のnameも変更されいていることが確認できます。

まとめ

PythonでSingletonを実現するには他のプログラミング言語(C++やJava)などと異なり、デフォルトコンストラクターを上書きすることで実現するのではなく、__new__()コンストラクターで実現できます。

以上、PythonでSingletonパターンを実現する方法でした。

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