python需要什么包裝_python學習之包裝與授權

實現授權的關鍵點就是覆蓋__getattr__()方法,在代碼中包含一個對getattr()內建函數的調用。

特別調用getattr()以得到默認對象屬性(數據屬性或者方法)并返回它以便訪問或調用。

特殊方法__getattr__()的工作方式是,當搜索一個屬性時,任何局部對象首先被找到(定制的對象)。如果搜索

失敗了,則__getattr__()會被調用,然后調用getattr()得到一個對象默認行為。

當引用一個屬性時,解釋器將試著在局部名稱空間中查找那個名字,比如一個自定義的方法或局部實例屬性。

如果沒有在局部字典中找到,則搜索類名名稱空間,以防一個類屬性被訪問。最后,如果兩類搜索都失敗了,

搜索則對原對象開始授權請求,此時,__getattr__()會被調用。

授權(也是一種包裝,關鍵點是覆蓋__getattr__方法)

基于基本類型定制自己的類型

import time

class FileHandle:

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):

print('------------>',line)

t=time.strftime('%Y-%m-%d %X')

self.file.write('%s %s' %(t,line))

def __getattr__(self, item):

# print(item,type(item))

# self.file.read

return getattr(self.file,item)

f1=FileHandle('a.txt','w+')

# print(f1.file)

# print(f1.__dict__)

# print('==>',f1.read) #觸發__getattr__

# print(f1.write)

f1.write('1111111111111111\n')

f1.write('cpu負載過高\n')

f1.write('內存剩余不足\n')

f1.write('硬盤剩余不足\n')

# f1.seek(0)

# print('--->',f1.read())

包裝

二次加工標準類型(包裝繼承加派生實現)

class List(list):

def append(self, p_object):

if type(p_object) is str:

# self.append(p_object) #導致無限遞歸

super().append(p_object)

else:

print('只能添加字符串類型')

def show_midlle(self):

mid_index=int(len(self)/2)

return self[mid_index]

# l2=list('hell oworld')

# print(l2,type(l2))

l1=List('helloworld')

# print(l1,type(l1))

# print(l1.show_midlle())

l1.append(1111111111111111111111)

l1.append('SB')

print(l1)

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

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

相關文章

參加技術培訓前的輔導,選得對,學得好

最近幾年,每年都會有人問我培訓班的事情,我也有培訓班經歷,在軟件行業工作了十多年,每次解答培訓班的咨詢我都很認真,也很高興能幫到他人。 決定通過專欄的形式解答培訓班常見問題,我把專欄取名“技術培訓…

[算法]淺談求n范圍以內的質數(素數)

汗顏,數學符號表達今天才學會呀-_-# 下面是百度百科對質數的定義 質數(prime number)又稱素數,有無限個。質數定義為在大于1的自然數中,除了1和它本身以外不再有其他因數。求質數的方法自然不少,但主要還是…

進入IT行業,要不要參加培訓班?

IT行業介紹 考慮培訓班無非是要入行,那IT行業好不好?IT行業當然好,看看培訓班的數量就知道了。現在房產行業好賺錢,每個小區門口好幾家中介門店,相同品牌的可能不止1家。不用去看網上的軟文,也不用去問百度,看市場的反應,這是真實的反饋。培訓班越來越多,課程越來越多…

python commands_Windows環境下使用python的commands.getstatusoutput

windows調用系統或其他腳本的,常用的是os.popen,次命令本身并不返回執行后的狀態,無法用于后續的判斷,故嘗試Unix下的commands.getstatusoutput,發現在windows下并不能正常使用,如下: >>&…

Kubernetes在上汽集團云平臺及AI方面的應用

2019獨角獸企業重金招聘Python工程師標準>>> 帆一尚行成立于2015年,是上汽集團的全資子公司,建設有上海、南京、鄭州(在建)三個數據中心,擁有超過4000臺物理服務器,10PB的數據存儲,總…

我的Java培訓經歷

此文講述我的Java開發培訓經歷,來解答關心的培訓費、培訓節奏、就業等問題。 我在2010年參加達內Java培訓,如今再回首那段時光,雖然辛苦,但很值得!(后悔參加培訓班,大部分原因是沖動&#xff0…

python跨函數調用變量_對python中不同模塊(函數、類、變量)的調用詳解

首先,先介紹兩種引入模塊的方法。 法一:將整個文件引入 import 文件名 文件名.函數名( ) / 文件名.類名 通過這個方法可以運行另外一個文件里的函數 法二:只引入某個文件中一個類/函數/變量 需要從某個文件中引入多個函數或變量時&#xff0c…

軟件培訓技術選哪個?

要培訓了,培訓技術怎么選? 技術需慎重選 女怕嫁錯郎,男怕入錯行。后悔參加培訓班,因為技術沒選好的占比很高。 技術沒選好會有什么影響? 近的影響是就業!遠的影響是發展! 對于程序員來說,技術就是立身之本,需要慎重選擇! 我在《要不要參加培訓班?》文章中介紹…

django安裝_技術大牛詳解:Django框架之環境安裝

黑馬程序員視頻庫播妞微信號:boniu236傳智播客旗下互聯網資訊、學習資源免費分享平臺虛擬環境安裝:開發中問題:如何在同一臺主機中,要開發多個不同的項目,而且需要用到同一個包的不同版本?嘗試分析:在開發過…

安裝 Alibaba Cloud Toolkit

IntelliJ IDEA版 JetBrains 插件市場下載 Eclipse 版 Eclipse 插件市場倉庫下載 (推薦)URL 地址在線安裝Maven 版 在 POM 文件中依賴 PyCharm、PhpStorm、RubyMine 和 WebStorm 版 公測中官網https://toolkit.aliyun.com 交流群(釘釘) 交流群&#xff08…

軟件Java前端大數據培訓機構怎么選?

先看這篇文章《要不要參加培訓班》。 選技術就像選另一半,那選培訓機構就是選另一半的家庭。另一半家庭好與不好,與婚后幸福生活息息相關。 選培訓機構的幾個維度: 1.成立時間 2.專業性 3.市場普及率 成立時間 成立久的不一定好,比如北大某鳥 成立不足3年的,不要選…

高效管理論壇廣告貼的小竅門

歡迎訪問網易云社區,了解更多網易技術產品運營經驗。這里提供一個關于如何管理論壇廣告貼的深度視角。一般的論壇在發展初期,用戶自發產生的內容不多,每一條數據都彌足珍貴,因此幾乎不會考慮到反垃圾需求。隨著產品規模的擴大&…

Chrome瀏覽器多開,親測有效

原理 指定不同的用戶目錄,就可以實現多開。即:"--user-data-dir" 指定不同的目錄。 操作 新建用戶目錄文件夾 要開幾個,就新建幾個,文件夾名隨意。 復制chrome快捷方式 修改目標路徑 每個快捷方式,修改…

計算機技術與軟件專業技術資格(水平)考試 全國各省市成績查詢

大家好,我是51CTO學院的文慧,目前收到很多參加軟考考試的學生針對考試成績查詢的問題,無法一一幫助到大家,故開此博客,希望可以幫助到大家。 2018年下半年軟考合格標準是多少?根據近幾年軟考合格標準來看&a…

培訓時常犯的學習誤區與應對方法

和在學校里上課一樣,同一位老師教,同班同學成績不同。同學之間的資質都是差不多的,因學習方法不同,學習心態不同,課后努力程度不同導致的成績差異。 本文介紹下培訓時容易犯的學習誤區和誤區的應對方法。 誤區1 不懂不明白的地方,非要打破鐵鍋問到底。 應對方法 培訓…

julia有沒有希望超越python_未來5-10年,Julia會替代Python成為量化投資熱門語言嗎?...

今年上過一個quantative programming的課程,去年教學用的語言還是python,加速的方法用的是jit即時編譯來提高編程效率,今年課程的設計就改成Julia了。 因為自己從2016年起數據研究用的都是python,所以最開始使用Julia的時候并不習…

常見的三種撞庫方法

歡迎訪問網易云社區,了解更多網易技術產品運營經驗。 在安全領域向來是先知道如何攻,其次才是防。在介紹如何防范網站被黑客掃描撞庫之前,先簡單介紹一下什么是撞庫:撞庫是黑客通過收集互聯網已泄露的用戶和密碼信息,生…

超越培訓班同學的獨門絕技

???????本文講3個獨門絕技,十多年苦練多得,只傳有緣人。 ??????? 不訂閱,就是不給看 絕技1 -----權益保護線----- -----權益保護線----- -----權益保護線----- -----權益保護線----- -----權益保護線----- 寫CSDN博文 CSDN上有不少參加培訓班的…

python逐個讀取字符_玩轉python之字符串逐個字符或逐詞反轉

眾所周知,python中的字符串是無法改變的,反轉一個字符串自然要創建一個拷貝;最簡單的方法,當然是步長為“-1”的切片: result astring[::-1] 如果要是按單詞來反轉,需要三步完成:字符串--->…

WPF TextBox 正則驗證 大于等于0 小于等于1 的兩位小數

原文:WPF TextBox 正則驗證 大于等于0 小于等于1 的兩位小數正則&#xff1a;^(0\.\d|[1-9][0-9]|1)$ TextBox綁定正則驗證 <TextBox x:Name"txb" MaxLength"6" Margin"1 0 0 0" Width"40" > <TextBox.Text> …