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

Python單例模式實例詳解

 更新時間:2017年03月01日 11:40:55   作者:一個人的天空@  
這篇文章主要介紹了Python單例模式,結(jié)合實例形式分析了單例模式的概念、實現(xiàn)與使用方法、已經(jīng)相關(guān)注意事項,需要的朋友可以參考下

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

單例模式:保證一個類僅有一個實例,并提供一個訪問他的全局訪問點(diǎn)。

實現(xiàn)某個類只有一個實例的途徑:

1,讓一個全局變量使得一個對象被訪問,但是他不能防止外部實例化多個對象。

2,讓類自身保存他的唯一實例,這個類可以保證沒有其他實例可以被創(chuàng)建。

多線程時的單例模式:加鎖-雙重鎖定

餓漢式單例類:在類被加載時就將自己實例化(靜態(tài)初始化)。其優(yōu)點(diǎn)是躲避了多線程訪問的安全性問題,缺點(diǎn)是提前占用系統(tǒng)資源。

懶漢式單例類:在第一次被引用時,才將自己實例化。避免開始時占用系統(tǒng)資源,但是有多線程訪問安全性問題。

實例:

#encoding=utf-8
#單例模式
def PrintInfo(info):
#  print unicode(info,'utf-8').decode('gbk')
  print info.decode('utf-8').encode('utf-8')
import threading
#單例類
class Singleton():
  instance=None
  mutex=threading.Lock()
  def _init__(self):
    pass
  @staticmethod
  def GetInstance():
    if(Singleton.instance==None):
      Singleton.mutex.acquire()
      if(Singleton.instance==None):
        PrintInfo('初始化實例')
        Singleton.instance=Singleton()
      else:
        PrintInfo('單例已經(jīng)實例化')
      Singleton.mutex.release()
    else:
      PrintInfo('單例已經(jīng)實例化')
    return Singleton.instance
def clientUI():
  Singleton.GetInstance()
  Singleton.GetInstance()
  Singleton.GetInstance()
  return
if __name__=='__main__':
  clientUI();

結(jié)果:

初始化實例 單例已經(jīng)實例化 單例已經(jīng)實例化

追加解釋 @staticmethod 在 Python中提到 classmethod 就要提到 staticmethod,不是因為二者有什么關(guān)系,而是為了讓用戶區(qū)分以便更清楚地寫代碼。在C++中,我們了解直接通過類名訪問的函數(shù)稱為類的靜態(tài)函數(shù),即static修飾的函數(shù),可見C++中classmethod和staticmethod是一個概念。 那么python中二者有什么區(qū)別呢?先來看下二者如何在python代碼中聲明

class MyClass:
 ...
 @classmethod # classmethod的修飾符
 def class_method(cls, arg1, arg2, ...):
  ...
 @staticmethod # staticmethod的修飾符
 def static_method(arg1, arg2, ...):
  ...

對于classmethod的參數(shù),需要隱式地傳遞類名,而staticmethod參數(shù)中則不需要傳遞類名,其實這就是二者最大的區(qū)別。

二者都可以通過類名或者類實例對象來調(diào)用,因為強(qiáng)調(diào)的是classmethod和staticmethod,所以在寫代碼的時候最好使用類名,良好的編程習(xí)慣吧。

對于staticmethod就是為了要在類中定義而設(shè)置的,一般來說很少這樣使用,可以使用模塊級(module-level)的函數(shù)來替代它。既然要把它定義在類中,想必有作者的考慮。

對于classmethod,可以通過子類來進(jìn)行重定義。

提到類級別的函數(shù),也順帶提及類級別的變量

class MyClass:
 i = 123 # class-level variable
 def __init__(self):
 self.i = 456 # object-level variable
 ...

為了清晰地區(qū)分上面兩個i,最好的辦法就是考慮到python中的一切都是object,所以i=123屬于class object的,i=456屬于class instance object

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用詳解

    Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用詳解

    python中Broadcast機(jī)制非常實用,在python中的廣播機(jī)制其實很簡單,下方主要介紹Broadcast廣播機(jī)制在Pytorch Tensor Numpy中的使用,希望對你有所幫助
    2022-08-08
  • Python實現(xiàn)的Google IP 可用性檢測腳本

    Python實現(xiàn)的Google IP 可用性檢測腳本

    這篇文章主要介紹了Python實現(xiàn)的Google IP 可用性檢測腳本,本文腳本需要Python 3.4+環(huán)境,需要的朋友可以參考下
    2015-04-04
  • Python實現(xiàn)視頻轉(zhuǎn)換為音頻的方法詳解

    Python實現(xiàn)視頻轉(zhuǎn)換為音頻的方法詳解

    這篇文章主要為大家詳細(xì)Python如何將視頻轉(zhuǎn)換為音頻并將音頻文件保存到特定文件夾下,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Python 實現(xiàn)隨機(jī)數(shù)詳解及實例代碼

    Python 實現(xiàn)隨機(jī)數(shù)詳解及實例代碼

    這篇文章主要介紹了Python 實現(xiàn)隨機(jī)數(shù)詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 實踐Python的爬蟲框架Scrapy來抓取豆瓣電影TOP250

    實踐Python的爬蟲框架Scrapy來抓取豆瓣電影TOP250

    這篇文章主要介紹了實踐Python的爬蟲框架Scrapy來抓取豆瓣電影TOP250的過程,文中的環(huán)境基于Windows操作系統(tǒng),需要的朋友可以參考下
    2016-01-01
  • python的?PyPDF2實現(xiàn)pdf文件切割和合并

    python的?PyPDF2實現(xiàn)pdf文件切割和合并

    大家好,本篇文章主要講的是python的?PyPDF2實現(xiàn)pdf文件切割和合并,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Python裝飾器語法糖

    Python裝飾器語法糖

    今天小編就為大家分享一篇關(guān)于Python裝飾器語法糖,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Jupyter Notebook調(diào)用指定的虛擬環(huán)境的實現(xiàn)示例

    Jupyter Notebook調(diào)用指定的虛擬環(huán)境的實現(xiàn)示例

    本文主要介紹了Jupyter Notebook調(diào)用指定的虛擬環(huán)境的實現(xiàn)示例,,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 基于Python?PyQt6打造高顏值多功能音頻錄制工具

    基于Python?PyQt6打造高顏值多功能音頻錄制工具

    在當(dāng)今數(shù)字化時代,音頻錄制工具已經(jīng)成為大家的必備工具,本文將詳細(xì)介紹如何使用Python的PyQt6庫開發(fā)一款功能全面,界面美觀的桌面錄音工具,感興趣的可以了解下
    2025-05-05
  • jupyter安裝小結(jié)

    jupyter安裝小結(jié)

    jupyter (之前的 ipython notebook )于我的最大意義在于,讓學(xué)習(xí)進(jìn)程和探索進(jìn)程變得可累積,正如它的原先名字中的 notebook 所暗示的那樣,作為學(xué)習(xí)的記錄者,方便你隨時撿起學(xué)習(xí)的進(jìn)度,增量式地前進(jìn)
    2016-03-03

最新評論

饶河县| 天柱县| 成都市| 温宿县| 龙里县| 北辰区| 全州县| 元氏县| 大冶市| 陕西省| 象州县| 河池市| 紫金县| 津市市| 玉龙| 新龙县| 乐山市| 黄浦区| 博乐市| 临泽县| 阳新县| 平凉市| 梁山县| 临海市| 棋牌| 永仁县| 博白县| 绥棱县| 云阳县| 明溪县| 甘洛县| 东乌| 沙坪坝区| 星子县| 临城县| 怀集县| 通州市| 奉化市| 缙云县| 汉川市| 蕲春县|