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

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

新聞中心

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

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

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

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

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

1. 使用模塊

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

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

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

2. 使用new

加上鎖

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

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

但是我們加上多線程試試

結(jié)果:

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

結(jié)果:

問題:

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

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

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

實現(xiàn)單例:


分享名稱:Python單例模式,你需要知道的4種方式
網(wǎng)站網(wǎng)址:http://m.5511xx.com/article/cddgpdj.html