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
發布評論請先 登錄
相關推薦
fpga 管腳不讓綁定的問題,綁定時提示: Not assignable
【AI技術支持】ESP8684-WROOM-01C模組socket綁定失敗問題處理
![【AI技術支持】ESP8684-WROOM-01C模組socket<b class='flag-5'>綁定</b>失敗問題處理](https://file.elecfans.com/web2/M00/45/DA/poYBAGKPGziABtawAAAYlXODTds073.jpg)
怎么綁定IP地址和MAC地址
機智云智家APP的設備掃描與綁定限制
![機智云智家APP的設備掃描與<b class='flag-5'>綁定</b>限制](https://file.elecfans.com/web2/M00/40/03/pYYBAGJrSWqAb-nSAAAXmKtCFeo833.jpg)
rk3588s 怎么將gpio中斷綁定到其它cpu
鴻蒙開發Ability Kit程序框架服務:FA模型綁定Stage模型ServiceExtensionAbility
![鴻蒙開發Ability Kit程序框架服務:FA模型<b class='flag-5'>綁定</b>Stage模型ServiceExtensionAbility](https://file1.elecfans.com/web2/M00/C5/D5/wKgZomYCnRSAcOMcAACEEnttXHc600.png)
BLE藍牙掉電綁定信息消失的原因?怎么解決?
如何手動往esp32 arp列表中添加自定義的arp綁定信息?
鴻蒙開發接口Ability框架:【@ohos.application.formBindingData (卡片數據綁定類)】
![鴻蒙開發接口Ability框架:【@ohos.application.formBindingData (卡片數據<b class='flag-5'>綁定</b><b class='flag-5'>類</b>)】](https://file1.elecfans.com/web2/M00/C6/C5/wKgaomYCyYKAZp6HAAB4LWPdpdQ014.jpg)
評論