Pythonのシングルモード


Python単例モード
  • 構想
  • を実現
  • まとめ
  • 構想
    1、単例モード、その名の通り1つの対象しかない
  • Pythonオブジェクトの作成には2つの手順があります.
  • オブジェクトに空間を割り当てる
  • .
  • 初期化オブジェクト

  • 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)
    

    まとめ
  • 設計モードでは、Javaの単一モードに比べてクラスが1つのクラスに1つのオブジェクトしか作成されないという単一のモードが理解しやすい.キーは、すべてのオブジェクトの参照を同じアドレス空間
  • に向けることである.