Pythonのシングルモード
Python単例モード構想 を実現まとめ 構想
1、単例モード、その名の通り1つの対象しかない Pythonオブジェクトの作成には2つの手順があります. オブジェクトに空間を割り当てる .初期化オブジェクト
2.したがって、1つのオブジェクトだけを作成する場合は、すべてのオブジェクトが同じアドレスを指すようにすればよい
ここで,初期化後にオブジェクトが1つしかない以上,1回だけ初期化してもよいことが分かったが,実装されたコードは最適化後の結果である.
インプリメンテーション
プレーヤークラスが1つあるとすると、同時に1曲しか再生できません
まとめ設計モードでは、Javaの単一モードに比べてクラスが1つのクラスに1つのオブジェクトしか作成されないという単一のモードが理解しやすい.キーは、すべてのオブジェクトの参照を同じアドレス空間 に向けることである.
1、単例モード、その名の通り1つの対象しかない
2.したがって、1つのオブジェクトだけを作成する場合は、すべてのオブジェクトが同じアドレスを指すようにすればよい
ここで,初期化後にオブジェクトが1つしかない以上,1回だけ初期化してもよいことが分かったが,実装されたコードは最適化後の結果である.
インプリメンテーション
プレーヤークラスが1つあるとすると、同時に1曲しか再生できません
class MusicPlayer:
#
instance = None
#
init_flag = False
# __new__ ,
def __new__(cls, *args, **kwargs):
#
if cls.instance is None:
# (object ) __new__
cls.instance = super().__new__(cls)
# , __init__
return cls.instance
# __init__
def __init__(self):
#
if MusicPlayer.init_flag:
#
return
# , True
MusicPlayer.init_flag = True
#
print(" ")
musicPlayer1 = MusicPlayer()
musicPlayer2 = MusicPlayer()
musicPlayer3 = MusicPlayer()
print(musicPlayer1)
print(musicPlayer2)
print(musicPlayer3)
まとめ