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.好的程序也理解簡單是最好的工程,并且高級工具也應該再在需要的時候使用。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
