Pythonデザインパターン-シングルトン
- クラスのインスタンス化を1つのオブジェクトに制限します。これは一種の作成パターンであり、メソッドと指定されたオブジェクトを作成するためのクラスは1つだけです。 作成されたインスタンスへのグローバルアクセスポイントを提供します。
サンプルコード
class Singleton: __instance = None @staticmethod def getInstance(): if Singleton.__instance == None: Singleton() return Singleton.__instance def __init__(self): if Singleton.__instance != None: raise Exception("このクラスはシングルトンです"") else: Singleton.__instance = self s = Singleton() print(s) s = Singleton.getInstance() print(s) s = Singleton.getInstance() print(s)
実行結果
<__main__.Singleton object at 0x7f17e1740400> <__main__.Singleton object at 0x7f17e1740400> <__main__.Singleton object at 0x7f17e1740400>
補足情報
@staticmethod 形式
-関数 デコレータ 。静的メソッドは (C.f() のよう) クラスから呼び出したり、 (C().f() のように) インスタンスから呼び出したりできます。 docs.python.org