python學習手冊筆記 39 元類

2022-08-19 14:48:09 字數 1311 閱讀 1799

00.比99%的使用者所擔心的魔力要更深。如果你猶豫是否需要他們,那你不需要它們(真正需要元類的人,能夠確定地直到需要它們,並且不需要說明為什麼需要)。「因為某物很酷」而編寫它,似乎不是一種合理的判斷,除非你在做試驗或者學習。

01.元類就是用來建立類的「東西」。你建立類就是為了建立類的例項物件。

02.03.元類的主要目的就是為了當建立類時能夠自動地改變類。

04.元類修改:

內省屬性:__class__和__dict__這樣的特殊屬性允許我們檢視python物件的內部實現方面

運算子過載方法:__str__和__add__這樣特殊命名的方法。

屬性攔截方法:__getattr__、__setattr__和__getattribute__允許包裝的類插入自動執行的**,這些**可以驗證屬性請求並且將它們委託給嵌入的物件

類特性:內建函式property允許我們把**和特殊的類屬性關聯起來,當獲取、複製或刪除該屬性的時候就自動執行**。儘管不想前面一段所介紹的工具那樣通用,特性考慮到了訪問特定屬性時候的自動**呼叫。

類屬性描述符:__get__、__set__和__delete__處理程式方法,當分配給該類的乙個例項的屬性被訪問的時候自動執行它們

函式和類裝飾器:裝飾器的特殊的@可呼叫用法,執行我們新增當呼叫要給函式或建立乙個類例項.裝飾器語法插入名稱重新繫結邏輯,在函式或類定義語句的末尾自動執行該邏輯——裝飾的函式和類名重新繫結到攔截了隨後呼叫的可呼叫物件。

05.元類

*提供一種更為正式和明確的結構

*有助於確保應用程式猿不會忘記根據乙個api需求來擴充套件它們的類

*通過把類定製邏輯工作化到乙個單獨的位置中,避免**冗餘及其相關的維護成本

06.類是型別,型別也是類:

*型別由派生自type得類定義

*使用者定義得類是型別類得例項

*使用者定義得類是產生它們自己得例項得型別

07.元類是type的字類

*type是產生使用者定義的類的乙個類

*元類是type類的乙個字類

*類物件是type類的乙個例項,或乙個子類

*例項物件產生字乙個類

08.一條class語句的末尾:

class = type(classname, superclasses, attributedict)

type.__new__(typeclass, classname, superclasses, attributedict)

type.__init__(class, classname, superclasses, attributedict)

09.好的程式也理解簡單是最好的工程,並且高階工具也應該再在需要的時候使用。

python學習手冊學習筆記(一)

第三章 如何執行檔案 避免命令列執行時閃退 加input 到最後 匯入 import 從本質上講,就是載入另乙個檔案。把其中乙個模組檔案設計成主檔案。屬性 繫結在特定物件上的變數名 比如乙個模組 讀取模組檔案的變數名 import from reload。從模組檔案中獲得變數名 from myfil...

《python學習手冊》閱讀筆記5 1 5 14

不知不覺這麼久沒寫了,兩周時間,看完了字串,列表與字典,元組與檔案,整個第二部分啃完了,第三部分是語句,再往後好像就是平時寫的時候沒接觸過的比較深的東西了,到時候應該會寫詳細點。print usage thingy options h display this usage message h hos...

python學習手冊筆記 18 引數

00.傳遞引數 a.引數的傳遞時通過自動將物件賦值給本地變數名來實現的。函式引數 呼叫者傳送的共享物件引用值 再實際中只是python賦值的另乙個例項而已。因為引用是以指標的形式實現的,所有的引數實際上都是通過指標及逆行傳遞的。作為引數被傳遞的物件從來不自動拷貝 b.再函式內不得引數名得賦值不會影響...