Python設計模式(單例模式)筆記
阿新 • • 發佈:2018-12-31
版本:Python3.6.1
# coding = utf - 8 """ time:2018年4月3日 10:15:02 function:設計模式---單例模式 """ """ 單例模式: 保證物件的唯一性 思路: 在建立物件時,只分配一個記憶體空間,不管你建立多少個物件,記憶體只有一個,所有物件都指向它 """ class singleClass(): __single = None #用來控制記憶體分配唯一 __firstInit = False #用來控制初始化唯一 def __init__(self,name,age): # 只要第一個初始化物件的值 if not singleClass.__firstInit: self.name = name self.age = age singleClass._firstInit = True def __new__(cls, *args, **kwargs): if not cls.__single: #當建立第一次物件之後,if一直不成立,記憶體一直沒變 cls.__single = super().__new__(cls) #將記憶體統一 return cls.__single a = singleClass("aaa",12) b = singleClass("bbb",13) c = singleClass("ccc",11) print("a.name = %s ,a.age = %d"%(a.name,a.age)) print("b.name = %s ,b.age = %d"%(b.name,b.age)) print("a.id = %d"%id(a)) print("b.id = %d"%id(b)) print("---"*20) a.age = 15 print("a.name = %s ,a.age = %d "%(a.name,a.age)) print("b.name = %s ,b.age = %d"%(b.name,b.age)) print("a.id = %d"%id(a)) print("b.id = %d"%id(b)) print(id(a.name)) print(id(a.age))