最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python單例模式實例分析

 更新時間:2015年01月14日 10:21:22   投稿:shichen2014  
這篇文章主要介紹了Python單例模式,以實例形式分析了Python單例模式的具體使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了Python單例模式的使用方法。分享給大家供大家參考。具體如下:

方法一

復制代碼 代碼如下:
import threading 
 
class Singleton(object): 
    __instance = None 
 
    __lock = threading.Lock()   # used to synchronize code 
 
    def __init__(self): 
        "disable the __init__ method" 
 
    @staticmethod 
    def getInstance(): 
        if not Singleton.__instance: 
            Singleton.__lock.acquire() 
            if not Singleton.__instance: 
                Singleton.__instance = object.__new__(Singleton) 
                object.__init__(Singleton.__instance) 
            Singleton.__lock.release() 
        return Singleton.__instance

1.禁用__init__方法,不能直接創(chuàng)建對象。

2.__instance,單例對象私有化。

3.@staticmethod,靜態(tài)方法,通過類名直接調(diào)用。

4.__lock,代碼鎖。

5.繼承object類,通過調(diào)用object的__new__方法創(chuàng)建單例對象,然后調(diào)用object的__init__方法完整初始化。

6.雙重檢查加鎖,既可實現(xiàn)線程安全,又使性能不受很大影響。

方法二:使用decorator

復制代碼 代碼如下:
#encoding=utf-8 
def singleton(cls): 
    instances = {} 
    def getInstance(): 
        if cls not in instances: 
            instances[cls] = cls() 
        return instances[cls] 
    return getInstance 
 
@singleton 
class SingletonClass: 
    pass 
 
if __name__ == '__main__': 
    s = SingletonClass() 
    s2 = SingletonClass() 
    print s 
    print s2

也應該加上線程安全

復制代碼 代碼如下:
import threading 
 
class Sing(object): 
    def __init__(): 
        "disable the __init__ method" 
 
    __inst = None # make it so-called private 
 
    __lock = threading.Lock() # used to synchronize code 
 
    @staticmethod 
    def getInst(): 
        Sing.__lock.acquire() 
        if not Sing.__inst: 
            Sing.__inst = object.__new__(Sing) 
            object.__init__(Sing.__inst) 
        Sing.__lock.release() 
        return Sing.__inst

希望本文所述對大家的Python程序設計有所幫助。

相關文章

  • 在TensorFlow中屏蔽warning的方式

    在TensorFlow中屏蔽warning的方式

    今天小編就為大家分享一篇在TensorFlow中屏蔽warning的方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python方差檢驗的含義及用法

    python方差檢驗的含義及用法

    在本篇內(nèi)容里小編給大家整理的是一篇關于python方差檢驗的含義及用法,有需要的朋友們可以跟著學習參考下。
    2021-07-07
  • python 提取文件的小程序

    python 提取文件的小程序

    在做網(wǎng)站項目時,開發(fā)經(jīng)常要給工程一個升級包,包含本次修改的內(nèi)容,這個升級包的內(nèi)容就是tomcat的發(fā)布目錄下的文件;
    2009-07-07
  • Python 移動光標位置的方法

    Python 移動光標位置的方法

    今天小編就為大家分享一篇Python 移動光標位置的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python保留數(shù)據(jù)并刪除Excel單元格的函數(shù)和公式

    Python保留數(shù)據(jù)并刪除Excel單元格的函數(shù)和公式

    在分析處理Excel表格時,我們可能需要使用各種公式或函數(shù)對表格數(shù)據(jù)進行計算,從而分析出更多的信息,但在展示、分享或再利用分析結果時,我們可能需要將含有公式的單元格轉(zhuǎn)換為靜態(tài)數(shù)值,本文將介紹如何使用Python代碼批量移除Excel單元格中的公式并保留數(shù)值
    2024-10-10
  • Python 的內(nèi)置字符串方法小結

    Python 的內(nèi)置字符串方法小結

    本文主要給大家介紹了下Python的一些內(nèi)置字符串的方法,包括概覽,字符串大小寫轉(zhuǎn)換,字符串格式輸出,字符串搜索定位與替換,字符串的聯(lián)合與分割,字符串條件判斷,字符串編碼
    2016-03-03
  • python之語音識別speech模塊

    python之語音識別speech模塊

    這篇文章主要介紹了python之語音識別speech模塊,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • python 第三方庫paramiko的常用方式

    python 第三方庫paramiko的常用方式

    這篇文章主要介紹了python 第三方庫paramiko的常用方式,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • 關于python列表增加元素的三種操作方法

    關于python列表增加元素的三種操作方法

    這篇文章主要介紹了關于python列表增加元素的幾種操作方法,主要有insert方法,extend方法和append方法,每種方法給大家介紹的非常詳細,需要的朋友可以參考下
    2018-08-08
  • Python簡單實現(xiàn)兩個任意字符串乘積的方法示例

    Python簡單實現(xiàn)兩個任意字符串乘積的方法示例

    這篇文章主要介紹了Python簡單實現(xiàn)兩個任意字符串乘積的方法,結合實例形式分析了Python針對字符串、列表的切片、轉(zhuǎn)換、遍歷等相關操作技巧,需要的朋友可以參考下
    2018-04-04

最新評論

永城市| 瑞安市| 湟中县| 郑州市| 那坡县| 琼结县| 准格尔旗| 铜鼓县| 宜州市| 长宁县| 台东市| 屏东市| 丘北县| 中西区| 井研县| 五常市| 沧州市| 高台县| 崇州市| 玉山县| 蛟河市| 伽师县| 咸宁市| 尚志市| 静海县| 垫江县| 常德市| 阜平县| 恭城| 宜州市| 太原市| 惠水县| 玉龙| 汝州市| 布尔津县| 桂东县| 昭苏县| 宁德市| 保山市| 襄垣县| 浠水县|