Python每天一分鐘:類定義進階/炫技—使用type函數動態創建類

Python中的type函數是常用於查看變量類型,在調試python代碼和bug修復過程中都是非常有效的工具。

然而,type函數的強大功能並非只能用於查看變量類型,在Python中完全允許使用 type函數來動態創建類,或者說定義類,這也是python類編程中的進階用法!

 

python類定義進階

下面我們將詳細介紹使用type函數動態創建類的過程!

type函數新解—能理解最好,不理解直接看下一節

先來看一段代碼,並仔細觀察type函數的輸出類型:

82 年 18 月 71號考試075分 去掉文字加我的裙

 

type函數新解

分析:

從上述代碼的輸出可見testClass類的類型竟然是type,這似乎與我們的認識不一致,該怎麼理解呢?

實際上從Python解釋器的角度就能說得通:python在使用關鍵字class 定義 testClass類時,可理解爲創建了一個特殊的對象(type類的對象)且將該對象賦給了testClass變量。

總的來說就是:在python代碼中,使用class 創建的所有類都是type類的實例!

下面我們將爲大家演示如何使用type函數動態創建/定義類!

使用type函數動態創建/定義類

解釋下"動態創建"的意思:在代碼的任何位置都可以創建!話不多說,直接看代碼演示:

 

type函數動態創建類

上圖程序的第5行代碼使用type 函數創建了 Dog 類,並指定了該類的三個參數:

第一個參數:類名。第二個參數:父類集合。用元組表示,指定所創建類繼承的多個父類。儘管只有一個父類,也必須使用元組語法(父類+一個逗號)第三個參數:字典。字典內容爲所創建類綁定的類變量和方法,字典的 key 爲類變量或方法名,字典的 value 爲普通值時表示類變量;字典的 value 爲函數名時則表示方法。根據上述原則,就很容易看懂代碼的內容了:

Dog類類名爲'Dog'父類只有一個:object類類中定義了一個run方法和一個name類變量,其中run方法由runImpl函數實現一個問題

大家可以嘗試使用type函數來練習如下問題:

 

一個練習

總結

實際上,Python解釋器在解釋通過class創建的類時,都是通過type 函數來定義。所以,無論是使用普通的類創建方式還是type函數的類創建方式,python最終都是創建一個type類的實例,並將其賦值給所創建的類名!

希望本文有助於讀者的學習,工作!最後感謝您的閱讀!

 

發佈了38 篇原創文章 · 獲贊 16 · 訪問量 6301
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章