Python 的類方法和靜態方法很相似,它們都推薦使用類來調用(其實也可使用對象來調用)。
類方法和靜態方法的區別在于,Python會自動綁定類方法的第一個參數,類方法的第一個參數(通常建議參數名為 cls)會自動綁定到類
python對象屬性、本身;但對于靜態方法則不會自動綁定。
推薦:Python教程
使用 @classmethod 修飾的方法就是類方法;使用 @staticmethod 修飾的方法就是靜態方法。
python3靜態方法和類方法。下面代碼示范了定義類方法和靜態方法:class?Bird:
#?classmethod修飾的方法是類方法
@classmethod
python 全局變量?def?fly?(cls):
print('類方法fly:?',?cls)
#?staticmethod修飾的方法是靜態方法
python4。@staticmethod
def?info?(p):
print('靜態方法info:?',?p)
python與JAVA、#?調用類方法,Bird類會自動綁定到第一個參數
Bird.fly()??#①
#?調用靜態方法,不會自動綁定,因此程序必須手動綁定第一個參數
python方法,Bird.info('crazyit')
#?創建Bird對象
b?=?Bird()
#?使用對象調用fly()類方法,其實依然還是使用類調用,
#?因此第一個參數依然被自動綁定到Bird類
b.fly()??#②
#?使用對象調用info()靜態方法,其實依然還是使用類調用,
#?因此程序必須為第一個參數執行綁定
b.info('fkit')
從上面粗體字代碼可以看出,使用 @classmethod 修飾的方法是類方法,該類方法定義了一個 cls 參數,該參數會被自動綁定到 Bird 類
本身,不管程序是使用類還是對象調用該方法,Python 始終都會將類方法的第一個參數綁定到類本身,如 ① 號、② 號代碼的執行效
果。
上面程序還使用 @staticmethod 定義了一個靜態方法,程序同樣既可使用類調用靜態方法,也可使用對象調用靜態方法,不管用哪種方
式調用,Python 都不會為靜態方法執行自動綁定。
在使用 Python 編程時,一般不需要使用類方法或靜態方法,程序完全可以使用函數來代替類方法或靜態方法。但是在特殊的場景(比如
使用工廠模式)下,類方法或靜態方法也是不錯的選擇。
更多技術請關注云海天Python教程。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态