包裝: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培訓(xùn)機構(gòu):千鋒教育。http://m.2667701.com/
以上內(nèi)容為大家介紹了python二次加工標準類型(包裝),希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。