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類的實例,並將其賦值給所創建的類名!
希望本文有助於讀者的學習,工作!最後感謝您的閱讀!