python 二次加工標準類型(包裝)
包裝:python為大家提供了標準數(shù)據(jù)類型,以及豐富的內(nèi)置方法,其實在很多場景下我們都需要基于標準數(shù)據(jù)類型
來定制我們自己的數(shù)據(jù)類型,新增/改寫方法,這就用到了我們剛學的繼承/派生知識(其他的標準類型均可以通過下面的
方式進行二次加工)。
#基于繼承的原理,來定制自己的數(shù)據(jù)類型(繼承標準類型)
classList(list):#繼承l(wèi)ist所有的屬性,也可以派生出自己新的,比如append和insert
defappend(self,p_object):#自己加工追加的方法
ifnotisinstance(p_object,int):#加上條件,不是int就拋出異常
raiseTypeError("mustbeint")#返回提示輸入類型
#self.append(p_object)#注意:這樣就無限遞歸了
super().append(p_object)#此時才會完成追加
definsert(self,index,p_object):#自己加工指定位置插入的方法
ifnotisinstance(p_object,int):#加上條件,不是int就拋出異常
raiseTypeError("mustbeint")#返回提示輸入類型
super().insert(index,p_object)#此時才會完成插入
l1=List([0,1,2])#實例化對象l1
print(l1)#打印列表l1
l1.append(3)#對象l1追加元素3,注意必須是int
print(l1)#打印列表l1
#l1.append("5")#此時會拋出異常,"5"不是int
l1.insert(0,-1)#在下標0的位置,插入元素-1,注意元素的類型
l1.insert(5,4)#在下標5的位置,插入元素4,注意元素的類型
print(l1)#打印列表l1
print(l1.index(4))#獲取元素的下標,沒有派生出自己的方法的時候,會繼承父類的方法
--------------------輸出結(jié)果------------------------
[0,1,2]
[0,1,2,3]
[-1,0,1,2,3,4]
5
授權(quán):授權(quán)是包裝的一個特性,包裝一個類型通常是對已存在的類型的一些定制,這種做法可以新建,修改或刪除原有
產(chǎn)品的功能。其它的則保持原樣。授權(quán)的過程,即是所有更新的功能都是由新類的某部分來處理,但已存在的功能就授權(quán)給
對象的默認屬性。
實現(xiàn)授權(quán)的關(guān)鍵點就是覆蓋__getattr__方法。
importtime
classOpen:#open是一個函數(shù),不是類,不能用繼承,so,用另一種方式:授權(quán)
def__init__(self,file_path,m="r",endoce="utf8"):
self.file=open(file_path,mode=m,encoding=endoce)#獲取文件句柄
self.file_path=file_path#文件路徑
self.mode=m#文件打開模式
self.encoding=endoce#文件的編碼方式
defwrite(self,line):#寫入文件
t=time.strftime("%Y-%m-%d%X")#獲取時間格式
self.file.write("%s--->%s"%(t,line))#前面加上時間,按格式寫入
def__getattr__(self,item):#當方法不存在的時候,會觸發(fā)它的執(zhí)行
returngetattr(self.file,item)#獲取文件其他的方法,并返回給對象
f1=Open("a.txt","w")#實例化對象f1,創(chuàng)建文件a.txt,以w模式
f1.write("1、你好,我摩旅去了!\n")#按自己加工的方法寫入內(nèi)容
f1.write("2、你好,我摩旅去了!\n")#按自己加工的方法寫入內(nèi)容
f1.write("3、你好,我摩旅去了!\n")#按自己加工的方法寫入內(nèi)容
f1.close()#關(guān)閉文件
f2=Open("a.txt","r")#實例化對象f2,查看文件a.txt,以r模式
print(f2.read())#打印輸出a.txt的文件內(nèi)容
f2.seek(0)#剛看完,光標走到最后位置了。要想再看,就得把光標調(diào)到最開始位置
print("-->:",f2.read())#加上標識,再看一遍
f2.close()#關(guān)閉文件
以上內(nèi)容為大家介紹了Python增強,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓機構(gòu):千鋒教育。http://www.mobiletrain.org/
以上內(nèi)容為大家介紹了python二次加工標準類型(包裝),希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓機構(gòu):千鋒教育。

猜你喜歡LIKE
相關(guān)推薦HOT
更多>>
pythonfor循環(huán)是什么
pythonfor循環(huán)是什么在做遍歷的時候,對于一些數(shù)據(jù)的反復(fù)循環(huán)執(zhí)行,我們會用到for循環(huán)的語句。可以說這是新手入門必學的語句之一,在很多基礎(chǔ)循...詳情>>
2023-11-13 07:46:36
pythoncontextmanager()的轉(zhuǎn)換
python中contextmanager()的轉(zhuǎn)換1、說明當發(fā)出請求時,requests庫會在將請求實際發(fā)送到目標服務(wù)器之前準備該請求。請求準備包括像驗證頭信息和...詳情>>
2023-11-13 06:34:35
python使用items()遍歷鍵值對
python使用items()遍歷鍵值對字典可以用來存儲各種方式的信息,所以有很多方式可以通過字典的所有鍵值對、鍵或值。說明1、即使通過字典,鍵值對...詳情>>
2023-11-13 04:24:15
python實例方法中self的作用
python實例方法中self的作用說明1、無論是創(chuàng)建類的構(gòu)造方法還是實例方法,最少要包含一個參數(shù)self。2、通過實例的self參數(shù)與對象進行綁定,程序...詳情>>
2023-11-13 03:46:48熱門推薦
python實現(xiàn)WSGI的框架
沸pythonfor循環(huán)是什么
熱python-=是什么意思
熱python打開文本文件有哪些方法?
新pythoncontextmanager()的轉(zhuǎn)換
pythonre是什么?
pythondecimal是什么
python列表追加元素出錯的解決
python使用loguru操作日志
python使用items()遍歷鍵值對
pythonvim中有哪些對象
python實例方法中self的作用
pythonin和is的區(qū)分
pythonos.path.join()函數(shù)的使用
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學習費用
了解課程價格 -
優(yōu)惠活動
領(lǐng)取優(yōu)惠券 -
學習資源
領(lǐng)3000G教程 -
師資團隊
了解師資團隊 -
實戰(zhàn)項目
獲取項目源碼 -
開班地區(qū)
查看來校路線