91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python實現單例的方法有哪些

發布時間:2023-03-02 10:08:57 來源:億速云 閱讀:127 作者:iii 欄目:開發技術

這篇“python實現單例的方法有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python實現單例的方法有哪些”文章吧。

    python 實現單例的方法

    第一種方法:使用基類

    New 是真正創建實例對象的方法,所以重寫基類的new 方法,以此保證創建對象的時候只生成一個實例

    class Singleton(object):
        def __new__(cls, *args, **kwargs):
            # hasattr 判斷是否有...屬性
            if not hasattr(cls, '_instance'):
                cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
            return cls._instance
    
    
    class Foo(Singleton):
        pass
    
    foo1 = Foo()
    foo2 = Foo()
    
    print(foo1 is foo2)

    第二種方法:使用裝飾器

    def Singleton(cls):
        instance = {}
        def wrapper(*args, **kwargs):
            if cls not in instance:
                instance[cls] = cls(*args, **kwargs)
            return instance[cls]
        return wrapper
    
    @Singleton
    class Foo(object):
        pass
    
    foo1 = Foo()
    foo2 = Foo()
    print(foo1 is foo2)

    python 單例對象

    單列模式

    單例模式(Singleton Pattern)是一種常用的軟件設計模式,該模式的主要目的是確保某 一個類只有一個實例存在。

    當你希望在整個系統中,某個類只能出現一個實例時,單例對象 就能派上用場。

    比如,某個服務器程序的配置信息存放在一個文件中,客戶端通過一個 AppConfig 的類來 讀取配置文件的信息。

    如果在程序運行期間,有很多地方都需要使用配置文件的內容,也就 是說,很多地方都需要創建 AppConfig 對象的實例,這就導致系統中存在多個 AppConfig 的實例對象,而這樣會嚴重浪費內存資源,尤其是在配置文件內容很多的情況 下。

    事實上,類似 AppConfig 這樣的類,我們希望在程序運行期間只存在一個實例對象。 注意:在python中導入模塊就是一種單例模式

    簡單來說單列模式就是創建單列對象,重寫object類里面的__new__方法使之開辟一個內存空間,所有對象都指向同一內存空間,使多個對象的引用地址相同

    class Dog (object):
        __instance=None
        def __new__(cls, *args, **kwargs):
            if cls.__instance==None:
                cls.__instance=object.__new__(cls)
                return cls.__instance
            else:
                return cls.__instance
    dog=Dog()
    dog1=Dog()
    print(id(dog))
    print(id(dog1))

    運行結果:

    python實現單例的方法有哪些

    你會發現兩個對象的id一樣 這也就說明兩個對象指向的內存地址就一樣,這個就是單例對象

    以上就是關于“python實現單例的方法有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    日土县| 连平县| 龙山县| 张北县| 牙克石市| 达拉特旗| 济阳县| 海林市| 五峰| 柘城县| 安泽县| 高平市| 勐海县| 翁牛特旗| 桐柏县| 安西县| 齐河县| 留坝县| 涞源县| 宿州市| 宜都市| 云浮市| 灵宝市| 饶平县| 鄢陵县| 汶上县| 集贤县| 库伦旗| 师宗县| 射洪县| 鄄城县| 城市| 凉山| 洛浦县| 来宾市| 新丰县| 高邑县| 平安县| 星子县| 晋州市| 黑龙江省|