フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

Pythonデザインパターン-シングルトン

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