property的使用
property是一個裝飾器,可以將類方法轉化為類屬性的表達。
舉個栗子:BMI指數,肥胖指數,很顯然,這是一個計算過程,但是在我們人類的認知當中,BMI更應該是一個屬性而非方法。
當我們把代碼換成:
很明顯,很難察覺這到底是執行了一個方法還是調用了一個屬性。
綁定方法
一、對象綁定(默認)
綁定方法:
綁定給誰,就由誰來調用,誰來調用就把它當作一個參數自動傳入
在python中,凡是類中的方法默認情況都是綁定給對象使用的
我們得到了一段bound method一段文字,這就是綁定方法。這里面的tell_info方法是綁定給對象使用的。
那么,當我們用類來調用該方法呢?會產生怎樣的效果?
為了更明顯,我們隨便定義一個函數來執行一下:
這下很醒目了吧,當類中的方法,用類去調用時,該方法是被當做普通函數來執行,而對象去調用則為綁定方法。對象綁定方法在python是默認的,前兩天使用的也都是對象綁定方法,這里就不做演示了。
二、類綁定方法(classmethod)
既然Python默認類中的方法或函數,都是綁定給對象使用。那么類中的綁定方法怎么解除和對象的綁定關系,進而綁定到類呢?
小明:“你問我我問誰啊?”
這個時候需要用到classmethod方法,它也是個裝飾器。
和對象的綁定方法一樣:綁定給類,就由類來調用,并將類作為第一個參數傳入;
和對象綁定方法不同在于:當對象在調用類的綁定方法時,也會默認把類當做參數傳遞進去。
cls和self都是一種命名習慣,cls作為第一個參數來表示類本身,在類方法中用到。
三、類綁定方法示例
例子用的可能過于粗糙,那能怎么辦呢,我也是這樣學的。。。
非綁定方法
在類中,有很多普通的方法,本身不需要綁定給對象或類來使用,誰都可以調用,沒有自動傳值效果,這就是非綁定方法。在python中,方法會自動綁定給對象,當我們需要解綁時來形成非綁定方法時,需要用到staticmethod方法,它還是一個裝飾器。
給每個人生成一個id號的示例:
審核編輯:劉清
-
python
+關注
關注
56文章
4802瀏覽量
84890 -
BMI
+關注
關注
0文章
10瀏覽量
3283
發布評論請先 登錄
相關推薦
評論