Singletonパターン:同じインスタンス結果ポイントの複数のインスタンス
IP = ' 1.1.1.1 ' PORT = 3306
インポートの設定は、 クラスの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)
インポート設定の クラス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)