日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python單例模式,你需要知道的4種方式

單例模式(Singleton Pattern)是一種常用的軟件設(shè)計(jì)模式,該模式的主目的是確保某一個(gè)類只有一個(gè)實(shí)例存在。當(dāng)你希望在整個(gè)系統(tǒng)中,某個(gè)類只能出現(xiàn)一個(gè)實(shí)例時(shí),單例對(duì)象就能派上用場。

10多年的貴陽網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整貴陽建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“貴陽網(wǎng)站設(shè)計(jì)”,“貴陽網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

比如,某個(gè)服務(wù)器程序的配置信息存放在一個(gè)文件中,客戶端通過一個(gè) AppConfig 的類來讀取配置文件的信息。如果在程序運(yùn)行期間,有很多地方都需要使用配置文件的內(nèi)容,也就是說,很多地方都需要?jiǎng)?chuàng)建 AppConfig 對(duì)象的實(shí)例,這就導(dǎo)致系統(tǒng)中存在多個(gè) AppConfig 的實(shí)例對(duì)象,而這樣會(huì)嚴(yán)重浪費(fèi)內(nèi)存資源,尤其是在配置文件內(nèi)容很多的情況下。事實(shí)上,類似 AppConfig 這樣的類,我們希望在程序運(yùn)行期間只存在一個(gè)實(shí)例對(duì)象。

在 Python 中,我們可以用多種方法來實(shí)現(xiàn)單例模式:

1. 使用模塊

可以參考自定義增刪改查組件site對(duì)象,很明顯的單利模式

其實(shí),Python 的模塊就是天然的單例模式,因?yàn)槟K在第一次導(dǎo)入時(shí),會(huì)生成 .pyc 文件,當(dāng)?shù)诙螌?dǎo)入時(shí),就會(huì)直接加載 .pyc 文件,而不會(huì)再次執(zhí)行模塊代碼。因此,我們只需把相關(guān)的函數(shù)和數(shù)據(jù)定義在一個(gè)模塊中,就可以獲得一個(gè)單例對(duì)象了。如果我們真的想要一個(gè)單例類,可以考慮這樣做:

將上面的代碼保存在文件 mysingleton.py 中,然后這樣使用:

2. 使用new

加上鎖

3. 利用類實(shí)現(xiàn)單例模式:

a. 不能支持多線程的單例模式

但是我們加上多線程試試

結(jié)果:

b. 解決上面存在的問題,實(shí)現(xiàn)支持多線程的單列模式:

結(jié)果:

問題:

創(chuàng)建實(shí)例只能調(diào)用Singleton.instance()來調(diào)用,不能用Singleton()來實(shí)現(xiàn)。

4. 基于metaclass方式實(shí)現(xiàn)

1.對(duì)象是類創(chuàng)建,創(chuàng)建對(duì)象時(shí)候類的__init__方法自動(dòng)執(zhí)行,對(duì)象()執(zhí)行類的 __ call__ 方法 2.類是type創(chuàng)建,創(chuàng)建類時(shí)候type的__init__方法自動(dòng)執(zhí)行,類() 執(zhí)行type的 __call__方法(類的__new__方法,類的__init__方法)

實(shí)現(xiàn)單例:


當(dāng)前標(biāo)題:Python單例模式,你需要知道的4種方式
分享URL:http://www.5511xx.com/article/cddgpdj.html