亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

东乡县| 喀喇| 诸城市| 汝城县| 嘉义县| 惠东县| 建德市| 丰都县| 彭阳县| 鄢陵县| 北京市| 资溪县| 阳春市| 南丹县| 泸定县| 曲靖市| 玛纳斯县| 容城县| 鹤岗市| 杭州市| 集安市| 建湖县| 黑河市| 绍兴市| 太保市| 洞口县| 武义县| 长海县| 拉孜县| 虎林市| 新津县| 松原市| 沙坪坝区| 景德镇市| 宁城县| 建湖县| 沙雅县| 寻乌县| 易门县| 黄陵县| 耿马|