真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python實(shí)現(xiàn)單例的方法

小編給大家分享一下python實(shí)現(xiàn)單例的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比古城網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式古城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋古城地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

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

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

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

使用裝飾器

def Singleton(cls):
    _instance = {}
    def _singleton(*args, **kargs):
        if cls not in _instance:
            _instance[cls] = cls(*args, **kargs)
        return _instance[cls]

    return _singleton
@Singleton
class A(object):
    a = 1

    def __init__(self, x=0):
        self.x = x
a1 = A(2)
a2 = A(3)

使用類,當(dāng)我們實(shí)現(xiàn)單例時,為了保證線程安全需要在內(nèi)部加入鎖

我們知道,當(dāng)我們實(shí)例化一個對象時,是先執(zhí)行了類的__new__方法(我們沒寫時,默認(rèn)調(diào)用object.__new__),實(shí)例化對象;然后再執(zhí)行類的__init__方法,對這個對象進(jìn)行初始化,所有我們可以基于這個,實(shí)現(xiàn)單例模式

使用__metaclass__(元類)

以上是python實(shí)現(xiàn)單例的方法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


標(biāo)題名稱:python實(shí)現(xiàn)單例的方法
鏈接分享:http://weahome.cn/article/jjjgcd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部