類的包裝和授權

2022-09-09 04:45:12 字數 1299 閱讀 6297

#

包裝:繼承基類,基於已存在的型別進行定製,進行二次加工

class

list(list):

def

if type(object) is

str:

else

:

print("

必須是字串型別")

l1 = list("

hello")

"ss")

print

(l1)

#授權:包裝的乙個特性,包裝的型別通常是對以存在的型別進行定製,新建,修改,刪除原功能

#而授權是所有更新的功能由新類處理,已存在的功能授權給物件作為預設屬性,不通過繼承實現,用的組合

#將系統內建的屬性方法組合到自己定製的類中,作為預設屬性,當自身的類未定製某個方法時,使用這些預設的屬性

#授權通過__getattr__方法

import

time

class

open:

def__init__(self,filename,mode="

r",encoding="

utf-8"):

#self.filename = filename

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

使用組合,呼叫系統的檔案開啟方法

self.mode =mode

self.encoding =encoding

def write(self,line): #

自己定義,按照查詢順序,則優先使用自己的屬性方法

t = time.strftime("

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

self.file.write(

"%s %s

" %(t,line)) #

使用系統內建的檔案方法

def__getattr__

(self, item):

print

(item)

return

getattr(self.file,item)

f1 = open("

a.txt

","w")

print

(f1.file)

print(f1.read) #

觸發__getattr__,在物件自身未找到方法,再到類中找,未找到,則觸發getattr,呼叫內建open函式

f1.write("

111")

python類 包裝 授權

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

python包裝和授權

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

python的包裝和授權

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