python的包裝和授權

2022-01-16 23:05:42 字數 1912 閱讀 7634

包裝:python為大家提供了標準資料型別,以及豐富的內建方法,其實在很多場景下我們都需要基於標準資料型別來定製我們自己的資料型別,新增/改寫方法,這就用到了我們剛學的繼承/派生知識(其他的標準型別均可以通過下面的方式進行二次加工)

#

包裝(二次加工標準型別)

#繼承 + 派生 的方式實現 定製功能

2、定製新的功能

class

list(list):

if type(object) is

str:

print("

正在新增[%s]

"%object)

#

else

:

print("

必須是字串型別")

def show_midlle(self): #

取傳入值得中間字元

mid_index = int(len(self)/2)

return

self[mid_index]

f1 = list("

helloworld")

"sb")

print

(f1)

print(f1.show_midlle())

授權:授權是包裝的乙個特性, 包裝乙個型別通常是對已存在的型別的一些定製,這種做法可以新建,修改或刪除原有產品的功能。其它的則保持原樣。授權的過程,即是所有更新的功能都是由新類的某部分來處理,但已存在的功能就授權給物件的預設屬性。

實現授權的關鍵點就是覆蓋__getattr__方法

#

組合的方式繼承了open函式的所有特性

class

filehandle:

def__init__(self,filename,mode = "

w",encoding = "

utf-8"):

self.file = open(filename,mode,encoding=encoding)

self.mode =mode

self.encoding =encoding

def__getattr__

(self,item):

return

getattr(self.file,item)

f1 = filehandle("

a.txt")

f1.write(

"1111\n

")

#

組合的方式定製寫的方法

import

time

class

filehandle:

def__init__(self,filename,mode = "

a+",encoding = "

utf-8"):

self.file = open(filename,mode,encoding=encoding)

self.mode =mode

self.encoding =encoding

defwrite(self,len):

t = time.strftime("

%y-%m-%d %x")

self.file.write(

"%s %s

"%(t,len))

def__getattr__

(self,item):

return

getattr(self.file,item)

f1 = filehandle("

a.txt")

f1.write(

"cpu負載過高\n")

f1.write(

"記憶體剩餘不足\n")

f1.write(

"硬碟剩餘不足\n")

#在寫內容的開頭加上時間

python包裝和授權

首先了解什麼是包裝和授權。我們知道,物件導向程式設計中有乙個理念就是封裝,而實際上物件導向也讓程式設計師在使用一些類 自己定義或則別人定義 物件的時候非常方便。包裝就是乙個希望將某個物件 或類 進行重新打包,裝換成另外一種更適合當前使用場合的對外介面。相似娛樂界對明星的包裝一樣,其實本質沒有什麼改變...

python許可權授權 Python包裝授權

1 什麼是包裝 coding utf 8 包裝類,就是給被包裝的類加個殼 被包裝內實現殼的內部,而包裝內提供殼的外部 介面 有點類似於繼承關係,不過也不完全時,因為通過繼承也可以實現包裝效果,不使用繼承同樣可以實現包裝效果。下面通過乙個例子來展示 包裝的概念 class packagelist ob...

python類 包裝 授權

包裝 是指對乙個已經存在的物件進行系定義加工。實現授權是包裝的乙個特性。包裝乙個型別通常是對已存在的型別進行一些自定義定製,這種做法可以新建,修改,或刪除原有產品的某些功能,而其他的保持不變。授權的過程,其實也就是所有的更新功能都交給新類的自定義的某部分功能來處理,但已存在的功能就授權給物件的預設屬...