python中的__new__方法和單例設計模式
阿新 • • 發佈:2018-12-17
#1. __new__方法 # 建立物件(__new__) =》 初始化物件(__init__) class Car(object): #__new__方法是類方法 def __new__(cls,*args,**kwargs): print('new method') # 一定要切記,必須要在new方法後面返回當前這個類的物件 #因為__new__方法是來建立物件的 return super(Car,cls).__new__(cls,*args,**kwargs) def __init__(self): print('car init method') car=Car() print(car) #2.單例設計模式:某個類或者模型在整個程式執行期間最多隻能有一個物件被建立 #我們可以判斷,如果User這個類沒有建立過物件,那麼就建立一個物件儲存在某個地方 #以後如果要再建立物件,我會去判斷,如果之前已經建立了一個物件,那麼就不再建立 #而是直接把之前那個物件返回回去 #__new__方法建立物件 class User(object): __instance = None def __new__(cls,*args,**kwargs): if not cls.__instance: cls.__instance = super(User,cls).__new__(cls) return cls.__instance def __init__(self,name): self.name = name user1 = User('luobin') user2 = User('fjq') #判斷兩個物件是否屬於同一個物件,通過呼叫id()來檢視他們的id #若一樣,則兩個物件就是同一個物件。 print(id(user1)) print(id(user2))