【Python代碼篇】-單例模式(五種實現單利方式)

(一)、如何反序的迭代一個序列?

# 如果是一個list,最來的解決方案是tempList = [1,2,3,4]
tempList.reverse()
for x in tempList:print x    
# 如果不是一個list,最通用的解決方案
print '\n- - - - - - - - - - - -'
tempTuple = (1,2,3,4)
for i in range(len(tempTuple)-1,-1,-1):print tempTuple[i]

(二)、 如何用Python來進行查詢和替換一個文本字符串?

# Python 中的 replace() 可以進行字符串替換
tempStr = "Hello java, Hello Python , Use JavaScript"
print tempStr.replace("Hello","Use")# Python 中的 sub() 可以用來查找并替換字符串, sub() 是使用正則來匹配
import re
rex = r'(Hello|Use)'
print re.sub(rex, 'Bye', tempStr)

(三)、使用Python實現單例模式。

  • 所謂單例就是一個類從始至終只能產生一個實例。
  • 方法一:使用new方法
    • new方法中把類實例綁定到類變量_instance上,如果cls._instance為None表示該類還沒有實例化過,實例化該類并返回。如果cls_instance不為None表示該類已實例化,直接返回cls_instance
  • 方法二:使用裝飾器(decorator)
  • 方法三:使用metaclass(元類)
  • 方法四:共享屬性
    • 所謂單例就是所有的引用(實例,對象)擁有相同的屬性和方法,同一個類的實例天生都會有相同的方法,那我們只需要保證同一個類所產生的實例都具有相同的屬性。所有實例共享屬性最簡單直接的方法就是共享dict屬性指向。
  • 方法五:Python模板

方法一 使用new方法

class SingleTon(object):def __new__(cls, *args, **kwargs):if not hasattr(cls,'_instance'):cls._instance = object.__new__(cls,*args,**kwargs)return cls._instanceclass TestClass(SingleTon):a = 1test1 = TestClass()
test2 = TestClass()print test1.a, test2.a
print id(test1),id(test2)

方法二:使用裝飾器(decorator)

def SingleTon(cls, *args, **kwargs):instances = {}def _singleton():if cls not in instances:instances[cls] = cls(*args, **kwargs)return instances[cls]return _singleton@SingleTon
class TestClass(object):a = 1test1 = TestClass()
test2 = TestClass()print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)

方法三:使用metaclass(元類)

class SingleTon(type):def __init__(cls,name,bases,dict):super(SingleTon,cls).__init__(name,bases,dict)cls._instance = Nonedef __call__(cls, *args, **kwargs):if cls._instance is None:cls._instance = super(SingleTon,cls).__call__(*args, **kwargs)return cls._instanceclass TestClass(object):__metaclass__ = SingleTontest1 = TestClass()
test2 = TestClass()test1.a = 1
print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)

方法四:共享屬性

class SingleTon(object):_state = {}def __new__(cls, *args, **kwargs):obj = object.__new__(cls, *args, **kwargs)obj.__dict__ = cls._statereturn objclass TestClass(SingleTon):a = 1print test1.a ,test2.a
test1.a = 2
print test1.a ,test2.a
print id(test1),id(test2)

方法五:Python模板

# 
class My_SingleTon(object):def foo(self):pass
my_sign = My_SingleTon()my_sign.foo()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455932.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455932.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455932.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

淺談數據庫索引

1.什么是索引 數據庫索引好比是一本書前面的目錄,能加快數據庫的查詢速度。 例如這樣一個查詢:select * from table1 where id44。如果沒有索引,必須遍歷整個表,直到ID等于44的這一行被找到為止;有了索引之后(必須是在ID這一列上建…

iphone屏幕突然變暗_如果你的iPhone屏幕突然變暗,可以這樣解決

??如果在使用 iPhone 的過程中,屏幕忽然變暗,可能有如下原因:開啟了“亮度自動調節”功能在 iPhone 中有一項“亮度自動調節”的功能,此功能是根據設備周圍的光線條件來調整亮度級別:在光線較暗的地方,傳…

宏塊與宏塊對(附圖)

宏塊與宏塊對(附圖) 假設 A、B 是上下相鄰的兩個 MB:在非宏塊對的情況下:A、B宏塊序號不連續,相差圖像一行宏塊個數。即按光柵掃描順序編號。在幀宏塊對的情況下:A、B宏塊序號連續,即按鋸齒掃描…

農業部部署農業大數據發展工作 評:對農業現代化很重要

據中國鄉村之聲《三農中國》報道,近日,農業部近日印發了《關于推進農業農村大數據發展的實施意見》,全面部署農業農村大數據發展工作。 《意見》明確了農業農村大數據發展和應用的五大基礎性工作和十一個重點領域,包括夯實國家農業…

HTML中的鏈接

HTML鏈接 <a>標簽可以在網頁上定義一個鏈接地址&#xff0c;通過href屬性定義跳轉的地址&#xff0c;通過title屬性定義鼠標懸停時彈出的提示文字框。 <a href"#"></a> <!-- # 表示鏈接到頁面頂部 --> <a href"http://www.itxdl.…

【MySQL】Linux端-實現Mysql數據定時自動備份

Linux端-實現Mysql數據定時自動備份 創建存放備份 sql 的文件夾 備份數據盡量存放在Linux單獨掛載的磁盤上&#xff0c;保證數據可靠性。磁盤建議使用EXT4分區格式。 [rootlocalhost ~]# mkdir /sk/mysqlBackup測試命令行備份數據庫 [rootlocalhost ~]# /usr/bin/mysqldump --o…

視頻測試序列的下載地址

1、http://www.tkn.tu-berlin.de/research/vid/&#xff08;此網站已經移走&#xff0c;正在尋找。&#xff09; CIF&#xff1a; Akiyo、Bridge (far) 、Bridge (close) 、Bus 、Container 、Coastguard 、Flower 、Football 、Foreman 、Hall 、Highway 、Mobile & Cal…

xtrabackup遷移單獨一張INNODB表

轉載于:https://www.cnblogs.com/llguanli/p/6746130.html

c語言有趣代碼_為什么C語言永遠不會過時?

直至今天還有人在喊著C語言都過時的語言了&#xff0c;還有什么值得去學的&#xff0c;看現在的python&#xff0c;php等語言現在用起來多簡單&#xff0c;誰還去學習老掉牙的C語言&#xff0c;事實真的是這樣的嗎&#xff1f;筆者作為專門下載了這兩種語言的底層源碼。由于篇幅…

Pokemon Go將在日本發布 網絡安全公司呼吁防范虛假軟件

據《每日新聞》報道&#xff0c;手游《Pokemon Go》(精靈寶可夢Go)在海外人氣爆棚&#xff0c;日本國內也有望近日發布。日本網絡安全公司呼吁&#xff0c;在正式發布前需防范虛假游戲軟件。 美國英特爾集團邁克菲公司&#xff08;東京都澀谷區&#xff09;表示&#xff0c;《P…

【接口文檔】Django restful framework中自動生成API文檔

Django restful framework中自動生成API文檔 一、Swagger概述 1.引言 當接口開發完成&#xff0c;緊接著需要編寫接口文檔。傳統的接口文檔使用Word編寫&#xff0c;or一些接口文檔管理平臺進行編寫&#xff0c;但此類接口文檔維護更新比較麻煩&#xff0c;每次接口有變更&am…

HTML中的列表

HTML列表 無序列表 在網頁上定義一個無編號的內容列表可以用<ul>、<li>配合使用來實現&#xff0c;代碼如下&#xff1a; <ul><li>列表文字一</li><li>列表文字二</li><li>列表文字三</li> </ul>在網頁上生成的列…

【ujson】pip安裝ujson報錯: error:Microsoft Visual C++ 14.0 is required

在win10上pip安裝ujson報錯 在使用pip安裝依賴包ujson時&#xff0c;遇到了問題&#xff0c;如下&#xff1a; building ujson extension error: Microsoft Visual C 14.0 is required. Get it with "Microsoft Visual C Build Tools": http://landinghub.visua…

HTML中的表格

HTML表格 table常用標簽 1、table標簽&#xff1a;聲明一個表格 2、tr標簽&#xff1a;定義表格中的一行 3、td和th標簽&#xff1a;定義一行中的一個單元格&#xff0c;td代表普通單元格&#xff0c;th表示表頭單元格 table常用屬性&#xff1a; 1、border 定義表格的…

CS224n筆記13 卷積神經網絡

為什么80%的碼農都做不了架構師&#xff1f;>>> 本文由碼農場同步&#xff0c;最新版本請查看原文&#xff1a;http://www.hankcs.com/nlp/cs224n-convolutional-neural-networks.html 補充了NLP中相對冷門的CNN&#xff0c;談了談調參與發論文的潛規則。從RNN到CN…

android tcp socket框架_socket網絡編程知識梳理,讓你學會造輪子的能力

在前面幾篇中&#xff0c;我給大家介紹了socket的相關知識&#xff0c;也給出了詳細的代碼&#xff0c;從socket的基本介紹&#xff0c;到IO多路復用&#xff0c;以及粘包拆包&#xff0c;最后到心跳包問題。總的來說大概都把socket網絡編程中能碰見的問題都講了&#xff0c;但…

264分析兩大利器:264VISA和Elecard StreamEye Tools

學了264有將近3個月有余&#xff0c;好多時候都在學習老畢的書和反復看JM86的代碼&#xff0c;最近才找到264分析兩大利器&#xff1a;264VISA和Elecard StreamEye Tools。不由得感嘆&#xff0c;恨不逢同時。 簡單的說下這兩個軟件&#xff1a; 264visa 強力的h264實時分析工具…

【解決】Django錯誤(1146,Table 'xxxx.django_session' doesn't exist)

報錯 解決辦法&#xff0c;settings.py中取消這行注釋&#xff0c;講session放緩存中 沒執行遷移的話&#xff0c;可能是debugtoolbar 把內容存儲在session中了 session最后也是放在redis里面的

QTP提供的編程接口實現對QTP操作

我們可以通過調用 Automation Object Model 里的對象接口 ,來實現對QTP 的操作,如打開 /運行腳本等動作Automation object model 的對象結構圖如下 (摘自QTP 參考手冊 )最新內容請見作者的GitHub頁&#xff1a;http://qaseven.github.io/

正態性檢驗ks和sw區別_非參數檢驗思路總結,清晰理解就靠它了!

1. 何時使用非參數檢驗或許你還沒有理解什么是參數檢驗、非參數檢驗&#xff0c;但一定曾在無意之中使用過它們。如我們常用的方差分析、T檢驗&#xff0c;都屬于參數檢驗。參數檢驗&#xff0c;就是假定數據服從某種分布&#xff0c;通過樣本信息對總體參數進行檢驗。因而在分…