property的使用
property是一個裝飾器,可以將類方法轉(zhuǎn)化為類屬性的表達。
舉個栗子:BMI指數(shù),肥胖指數(shù),很顯然,這是一個計算過程,但是在我們?nèi)祟惖恼J知當(dāng)中,BMI更應(yīng)該是一個屬性而非方法。
當(dāng)我們把代碼換成:
很明顯,很難察覺這到底是執(zhí)行了一個方法還是調(diào)用了一個屬性。
綁定方法
一、對象綁定(默認)
綁定方法:
綁定給誰,就由誰來調(diào)用,誰來調(diào)用就把它當(dāng)作一個參數(shù)自動傳入
在python中,凡是類中的方法默認情況都是綁定給對象使用的
我們得到了一段bound method一段文字,這就是綁定方法。這里面的tell_info方法是綁定給對象使用的。
那么,當(dāng)我們用類來調(diào)用該方法呢?會產(chǎn)生怎樣的效果?
為了更明顯,我們隨便定義一個函數(shù)來執(zhí)行一下:
這下很醒目了吧,當(dāng)類中的方法,用類去調(diào)用時,該方法是被當(dāng)做普通函數(shù)來執(zhí)行,而對象去調(diào)用則為綁定方法。對象綁定方法在python是默認的,前兩天使用的也都是對象綁定方法,這里就不做演示了。
二、類綁定方法(classmethod)
既然Python默認類中的方法或函數(shù),都是綁定給對象使用。那么類中的綁定方法怎么解除和對象的綁定關(guān)系,進而綁定到類呢?
小明:“你問我我問誰啊?”
這個時候需要用到classmethod方法,它也是個裝飾器。
和對象的綁定方法一樣:綁定給類,就由類來調(diào)用,并將類作為第一個參數(shù)傳入;
和對象綁定方法不同在于:當(dāng)對象在調(diào)用類的綁定方法時,也會默認把類當(dāng)做參數(shù)傳遞進去。
cls和self都是一種命名習(xí)慣,cls作為第一個參數(shù)來表示類本身,在類方法中用到。
三、類綁定方法示例
例子用的可能過于粗糙,那能怎么辦呢,我也是這樣學(xué)的。。。
非綁定方法
在類中,有很多普通的方法,本身不需要綁定給對象或類來使用,誰都可以調(diào)用,沒有自動傳值效果,這就是非綁定方法。在python中,方法會自動綁定給對象,當(dāng)我們需要解綁時來形成非綁定方法時,需要用到staticmethod方法,它還是一個裝飾器。
給每個人生成一個id號的示例:
審核編輯:劉清
-
python
+關(guān)注
關(guān)注
56文章
4825瀏覽量
86223 -
BMI
+關(guān)注
關(guān)注
0文章
10瀏覽量
3380
發(fā)布評論請先 登錄
FA模型綁定Stage模型ServiceExtensionAbility介紹
Stage模型綁定FA模型ServiceAbility的方法
harmony OS NEXT-雙向數(shù)據(jù)綁定MVVM以及$$語法糖介紹
無法在iMX8上啟動gpsd:GPSD綁定怎么解決?
fpga 管腳不讓綁定的問題,綁定時提示: Not assignable
【AI技術(shù)支持】ESP8684-WROOM-01C模組socket綁定失敗問題處理

怎么綁定IP地址和MAC地址
機智云智家APP的設(shè)備掃描與綁定限制

rk3588s 怎么將gpio中斷綁定到其它cpu
如何正確配置華納云服務(wù)器以實現(xiàn)域名綁定?
鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型綁定FA模型ServiceAbility

鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型綁定Stage模型ServiceExtensionAbility

評論