Python3はシングルトンデザインパターンを実装しています

シングルトンパターンの一般的な実現##

空腹の中国人##

***怠惰な男のスタイルは、方法によってシングルトンを達成することです。私はそれをあまり使用しないので、ここで空腹の男のスタイルを書きます。怠惰な男のスタイルは後で作ります。 ***
シングルトンパターンのコア機能は、クラスにそのタイプのオブジェクトが1つだけあることを確認することです。オブジェクトが呼び出されすぎたときに過度のメモリ消費を回避するために、シングルトンモードを使用できます。

pythonでオブジェクトを作成すると、 __new__メソッドが呼び出され、作成されたオブジェクトにメモリスペースが割り当てられ、オブジェクトへの参照が返されます。この参照は、インスタンス化のために __init__関数に渡されます。

通常、** new **メソッドを呼び出す必要はありません。この手順は、シングルトンを使用する場合に必要です。 ** new **メソッドを書き直すときは、現在のインスタンスのクラスclsを返す必要があります: return super().__ new __(cls)。割り当てられたメモリスペース参照を取得したら、オブジェクトのインスタンス化を開始します。コードは次のように簡単に記述できます。

classClassObj(object):
 def __new__(cls):print("メモリを割り当てるには")returnsuper().__new__(cls)

 def __init__(self):print("初期化を開始します")
cobj =ClassObj()

結果は次のとおりです。

ただし、上記のコードはシングルトンモードを実装していません。現時点では、上記のコードを変更する必要があります。
** new **メソッドを使用する場合は、インスタンス化されているかどうかを確認してください。

classClassObj(object):
 instance=None
 def __new__(cls):if cls.instance is None:
   cls.instance=super().__new__(cls)print("メモリを割り当てるには")else:print("すでに割り当てられています")return cls.instance

 def __init__(self):print("すでに割り当てられています")
cobj =ClassObj()
cobj1 =ClassObj()

上記のコードは、割り当てられたスペース参照を格納するために使用されるClassObjのメンバー変数インスタンスを定義し、最後に__new__メソッドでインスタンスを返します。このタイプのオブジェクトが初めて作成され、インスタンスがNoneであると仮定すると、インスタンス化されます。 Noneでない場合は、割り当てられたことを示すプロンプトが表示され、作成のためにスペースが再度割り当てられることはありません。結果は次のとおりです。

上記の結果は、オブジェクトが初めて作成されたときにのみスペースを割り当て、オブジェクトの作成後にスペースは作成されません。
このとき、クラスオブジェクトを直接出力して、スペースを表示することもできます。

cobj =ClassObj()
cobj1 =ClassObj()print(cobj)print(cobj1)

結果は次のようになります。

Recommended Posts

Python3はシングルトンデザインパターンを実装しています
python3は単に結合された設計パターンを実装します
Pythonは実店舗のゲームを実装しています
Pythonがメール機能を実装する方法
Pythonは単にスネークゲームを実装します
Pythonは最も急な降下方法を実装します
Pythonは実際の銀行システムを実装しています
Pythonがタイマー機能を実装する方法
Pythonは航空機戦争プロジェクトを実装します
Pythonは分数シーケンスの合計を実装します
pythonは勾配メソッドを実装しますpython最速の降下メソッド
Pythonのデザインパターン
2.1 Pythonインタープリター(pythonインタープリター)
PythonはDoudizhuでカードのシャッフルを実装します
Pythonはスネークゲームのソースコードを実装しています
Pythonはtic-tac-toeゲームを実装しています
Pythonはtic-tac-toeゲームを実装しています
Pythonはマンマシンゴバンを実装します
PythonはTetrisゲームを実装しています
Pythonは画像スティッチングを実装しています
Pythonはminesweeperゲームを実装しています
Pythonはスキャンツールを実装しています
Pythonの基盤を統合する(2)
Pythonはしきい値回帰を実装します
Pythonは地雷除去ゲームを実装しています
Pythonは電子辞書を実装しています
Pythonは推測ゲームを実装しています
Pythonの基盤を統合する(4)
Pythonは単純なタンクバトルを実装します
Python(7)の基盤を統合する
Pythonはudpチャットウィンドウを実装します
PythonはWeChat飛行機ゲームを実装しています
Pythonは単語推測ゲームを実装しています
Python(6)の基盤を統合する
Ubuntuは最新のPython3をインストールします。
Pythonは駐車場管理システムを実現
Pythonはデジタル爆弾ゲームを実装しています
PythonはTCPファイル転送を実装します
Pythonは推測ゲームを実現します
Python拡張機能の違い
Pythonnumpyはローリングケースを実装します
OpenCVPythonはパズルゲームを実装しています
Pythonは単純なtic-tac-toeゲームを実装しています
Python(5)の基盤を統合する
Pythonはパスワード強度検証を実装します
Pythonは車の管理システムを実装しています
Pythonはコードブロックフォールディングを実装します
Pythonはパノラマ画像スティッチングを実装しています
PythonはSMTPメール送信を実装します
Pythonは多次元配列ソートを実装しています
PythonがFTP機能を実装する方法
Pythonは平均シフトクラスタリングアルゴリズムを実装しています
Pythonは検証コード認識を実装します
Pythonは勾配降下法を実装しています
Pythonはテキストバージョンのminesweeperを実装しています
Pythonの基盤を統合する(3)
Pythonは画像スティッチング機能を実装しています