元類使用規範

2021-10-04 00:21:52 字數 675 閱讀 6356

在大型的物件導向程式中,有時將類定義置於元類的控制下會很有用。元類可以檢查類的定義,並用於警告程式設計師可能未引起注意的潛在問題(例如,使用稍微不相容的方法簽名)。

有人可能會爭辯說,程式分析工具或ide可以更好地捕獲此類錯誤。可以肯定的是,這樣的工具是有用的。但是,如果您要建立供他人使用的框架或庫,則通常無法控制他們的開發實踐的嚴格性。因此,對於某些型別的應用程式,如果這樣的檢查會帶來更好的使用者體驗,則可能需要對元類進行一些額外的檢查。

在元類中重新定義__new __()或__init __()的選擇取決於您要如何使用結果類。__new __()在類建立之前被呼叫,通常在元類想要以某種方式(通過更改類字典的內容)更改類定義時使用。 __init __()方法在建立類之後被呼叫,如果您要編寫與完全角成的類物件一起工作的**,該方法很有用。在最後乙個示例中,這是必不可少的,因為它使用super()函式搜尋先前的定義。這僅在建立類例項並設定了基礎方法解析順序(mro)後才有效。

最後乙個示例還說明了python函式簽名物件的用法。本質上,元類採用類中的每個可呼叫定義,搜尋先前的定義(如果有),然後使用inspect.signature()簡單地比較其呼叫簽名。

最後但並非最不重要的一點是,使用super(self,self)的**行不是錯字。當使用元類時,重要的是要認識到self實際上是乙個類物件。因此,該語句實際上用於查詢位於構成自身父級的類層次結構中更遠的定義。

元類使用規範

在大型的物件導向程式中,有時將類定義置於元類的控制下會很有用。元類可以檢查類的定義,並用於警告程式設計師可能未引起注意的潛在問題 例如,使用稍微不相容的方法簽名 有人可能會爭辯說,程式分析工具或ide可以更好地捕獲此類錯誤。可以肯定的是,這樣的工具是有用的。但是,如果您要建立供他人使用的框架或庫,則...

python元類的使用 python使用元類

原文 type 動態語言和靜態語言最大的不同,就是函式和類的定義,不是編譯時定義的,而是執行時動態建立的。比方說我們要定義乙個hello的class,就寫乙個hello.py模組 當python直譯器載入hello模組時,就會依次執行該模組的所有語句,執行結果就是動態建立出乙個hello的class...

python元類的使用 Python的元類如何使用

這次給大家帶來python的元類如何使用,使用python元類的注意事項有哪些,下面就是實戰案例,一起來看一下。今天我的任務就是徹底明白什麼是元類,一起看看。要搞懂元類,我們還是先從物件說起。python 一切皆物件,這句話你一定有聽說過 現在你就聽說了 乙個數字是物件,乙個字串是物件,乙個列表是物...