例単一達成するための4つの方法

Singletonパターン:同じインスタンス結果ポイントの複数のインスタンス
IP = ' 1.1.1.1 ' 
PORT = 3306
settings.py
インポートの設定は、

クラスのMySQL:
     __instance = なし
     デフ __init__ (自己、IP、ポート):
        self.ip = IP 
        self.port = ポートが

    @classmethod 
    デフfrom_conf(CLS)を:
         場合 CLS。__instanceは ありませんなし:
            CLS。__instance =のCLS(settings.IP、settings.PORT)
         リターン CLS。__instance 
OBJ1 = MySQL.from_conf()
OBJ2 = MySQL.from_conf()
OBJ3 =MySQL.from_conf()
OBJ4 = MySQLの(' 1.1.1.3 '、3302 印刷(OBJ1)
 プリント(obj2の)
 プリント(OBJ3)
 プリント(OBJ4)
最初の
インポート設定の

デフシングルトン(CLS):
    _INSTANCEの = CLS(settings.IP、settings.PORT)
     デフラッパー(* argsを、** kwargsから):
         場合!(引数)= 0でlen または LEN(kwargsから)=!0:
            OBJ = CLS(* argsを、** kwargsから)
             リターンOBJの
         リターン_INSTANCE
     返すラッパー

@Singleton のMySQL =シングルトン(MySQLの)#MySQLの=ラッパー
クラスのMySQL:
     デフ __init__ (自己、IP、ポート):
        self.ip = IP
        self.port = ポート

OBJ = MySQLの( '1.1.1.1'、3306)#OBJ =ラッパー( '1.1.1.1'、3306)
#1 プリント(OBJ .__ dict__に)

OBJ1 = MySQLの() ラッパー() 
OBJ2 = MySQLの() ラッパー() 
OBJ3 = MySQLの() ラッパー() 
OBJ4 = MySQLの(' 1.1.1.3 '、3302) ラッパー( '1.1.1.3'、3302)
プリント(OBJ1)
 プリント(OBJ2)
 プリント(OBJ3)
 印刷(OBJ4)
第2
インポート設定の

クラスMymeta(タイプ):
     デフ __init__ (自己、CLASS_NAME、class_bases、class_dic):
        自己= MySQLの这个类 
        自己。__instance = 自己(settings.IP、settings.PORT)

    デフ __call__(自己、* argsを、** kwargsから):
        自己= MySQLの这个类
        場合 LEN(引数)!= 0 または LEN(kwargsから)=!0:
            OBJ =自己。__new__ (自己)
            自己。__init__(OBJ、* argsを、** kwargsから)
             復帰OBJ
         リターン自己。__instanceの

クラスのMySQL(メタクラス= Mymeta): MySQLの= Mymeta(...)
    デフ __init__ (自己、IP、ポート):
        self.ip = IP 
        self.port = ポート


OBJ1 = のMySQL()
obj2が = のMySQL()
OBJ3 = MySQLの()
OBJ4 = MySQLの(' 1.1.1.3 '、3302 印刷(OBJ1)
 プリント(obj2の)
 プリント(OBJ3)
 プリント(OBJ4)
第三の
デフF1():
     からシングルトンの輸入インスタンス
     印刷(インスタンス)

DEF F2():
     からシングルトンの輸入インスタンス、MySQLの
     印刷(インスタンス)
    OBJ = MySQLの(' 1.1.1.3 '、3302 印刷(OBJ)

F1()
、F2()
第四の
インポート設定の

クラスのMySQL:
     印刷' 実行... ' デフ __init__ (自己、IP、ポート):
        self.ip = IP 
        self.port = ポート

インスタンス =のMySQL(settings.IP、settings.PORT)
singletion.py

 

おすすめ

転載: www.cnblogs.com/zhouhao123/p/11334204.html
おすすめ