Python單例模式

2022-06-19 13:51:15 字數 1408 閱讀 1916

單例設計模式怎麼來的?

在面向對的程式設計中,當業務併發量非常大,那麼就會出現重複建立的相同的物件,每建立乙個物件就會開闢一塊記憶體空間,而這些物件其實是一抹一樣的,那麼有沒有辦法使用得記憶體物件只建立一次,然後在隨處使用呢?單例模式就是解決這個問題的。

實現方式:

1、建立乙個類靜態字段(類變數)__instance

2、建立乙個靜態函式,通過函式的邏輯判斷 __instance 是否已存在,如不存在就將物件值賦於            __instance,即__instance = 類(),否則直接返回__instance,也即建立的物件都是一樣的

3、使用單例模式建立物件時直接通過類呼叫靜態函式建立即可

'''

普通模式

'''class

a(object):

def__init__

(self,name,male):

self.name =name

self.male =male

#例項化多boy個物件

obj1 = a('

ben','

boy'

)obj2 = a('

min','

girl')

obj3 = a('

miao

','boy')

print

(id(obj1),id(obj2),id(obj3))

#2061619812168 2061619812448 2061619812504

'''

單例模式

'''class

a(object):

__instance =none

def__init__

(self,name,male):

self.name =name

self.male =male

@staticmethod

defcreate_obj():

ifnot a.__instance

: a.

__instance = a('

ben','

boy'

)

return a.__instance

else

:

return a.__instance

#單例模式例項化多個物件

obj1 =a.create_obj()

obj2 =a.create_obj()

obj3 =a.create_obj()

#列印下記憶體位址

print(id(obj1),id(obj2),id(obj3))

#1608791595832 1608791595832 1608791595832

python單例模式繼承 python單例模式

我們可以使用 new 這個特殊方法。該方法可以建立乙個其所在類的子類的物件。更可喜的是,我們的內建 object 基類實現了 new 方法,所以我們只需讓 sing 類繼承 object 類,就可以利用 object 的 new 方法來建立 sing 物件了。classsing object def...

單例模式 python

單例模式 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。實現 某個類只有乙個例項 途徑 1 讓乙個全域性變數使得乙個物件被訪問,但是它不能防止外部例項化多個物件。2 讓類自身負責儲存它的唯一例項。這個類可以保證沒有其他例項可以被建立。即單例模式。多執行緒時的單例模式 加鎖 雙重鎖定。餓漢式...

python單例模式

new 在 init 之前被呼叫,用於生成例項物件。利用這個方法和類的屬性的特點可以實現設計模式的單例模式。單例模式是指建立唯一物件,單例模式設計的類只能例項 例項化1個物件。class singleton object instance none def init self pass def ne...