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