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

溫馨提示×

溫馨提示×

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

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

Python實現單例模式的方式有哪些

發布時間:2022-05-18 11:07:46 來源:億速云 閱讀:139 作者:iii 欄目:開發技術

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

簡介:單例模式可以保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。適用性于當類只能有一個實例而且客戶可以從一個眾所周知的訪問點訪問它,例如訪問數據庫、MQ等。

實現方式:

1、通過導入模塊實現

2、通過裝飾器實現

3、通過使用類實現

4、通過__new__ 方法實現

單例模塊方式被導入的源碼:singleton.py

# -*- coding: utf-8 -*-
# time: 2022/5/17 10:31
# file: singleton.py
# author: tom
# 公眾號: 玩轉測試開發


class Singleton(object):
    def __init__(self, name):
        self.name = name

    def run(self):
        print(self.name)

s = Singleton("Tom")

主函數源碼:

# -*- coding: utf-8 -*-
# time: 2022/5/17 10:51
# file: test_singleton.py
# author: tom
# 公眾號: 玩轉測試開發
from singleton import s as s1
from singleton import s as s2


# Method One:通過導入模塊實現
def show_method_one():
    """

    :return:
    """
    print(s1)
    print(s2)
    print(id(s1))
    print(id(s2))


show_method_one()


# Method Two:通過裝飾器實現
def singleton(cls):
    # 創建一個字典用來保存類的實例對象
    _instance = {}

    def _singleton(*args, **kwargs):
        # 先判斷這個類有沒有對象
        if cls not in _instance:
            _instance[cls] = cls(*args, **kwargs)  # 創建一個對象,并保存到字典當中
        # 將實例對象返回
        return _instance[cls]

    return _singleton


@singleton
class Demo2(object):
    a = 1

    def __init__(self, x=0):
        self.x = x


a1 = Demo2(1)
a2 = Demo2(2)
print(id(a1))
print(id(a2))


# Method Three:通過使用類實現
class Demo3(object):
    # 靜態變量
    _instance = None
    _flag = False

    def __new__(cls, *args, **kwargs):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

    def __init__(self):
        if not Demo3._flag:
            Demo3._flag = True


b1 = Demo3()
b2 = Demo3()
print(id(b1))
print(id(b2))


# Method Four:通過__new__ 方法實現
class Demo4:
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, '_instance'):
            cls._instance = super(Demo4, cls).__new__(cls)
        return cls._instance


c1 = Demo4()
c2 = Demo4()
print(id(c1))
print(id(c2))

運行結果:

Python實現單例模式的方式有哪些

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

向AI問一下細節

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

AI

扶余县| 三明市| 长治市| 蒙自县| 双辽市| 蒲江县| 镇康县| 横山县| 壤塘县| 上高县| 河间市| 铜川市| 芜湖市| 吉木萨尔县| 宝应县| 庆阳市| 肇州县| 铜川市| 崇信县| 东港市| 林州市| 当雄县| 精河县| 环江| 平陆县| 太康县| 乐业县| 肃南| 嘉兴市| 洪湖市| 固镇县| 黄山市| 观塘区| 永胜县| 郯城县| 龙岩市| 成安县| 广南县| 商都县| 保山市| 太和县|