關於@staticmethod,這里拋開修飾器的概念不談,只簡單談它的作用和用法。
staticmethod用於修飾類中的方法,使其可以在不創建類實例的情況下調用方法,這樣做的好處是執行效率比較高。當然,也可以像一般的方法一樣用實例調用該方法。該方法一般被稱為靜態方法。靜態方法不可以引用類中的屬性或方法,其參數列表也不需要約定的默認參數self。我個人覺得,靜態方法就是類對外部函數的封裝,有助於優化代碼結構和提高程序的可讀性。當然了,被封裝的方法應該盡可能的和封裝它的類的功能相匹配。
這里給出一個樣例來直觀的說明一下其用法。
class Time():
def __init__(self,sec):
self.sec = sec
#聲明一個靜態方法
@staticmethod
def sec_minutes(s1,s2):
#返回兩個時間差
return abs(s1-s2)
t = Time(10)
#分別使用類名調用和使用實例調用靜態方法
print(Time.sec_minutes(10,5),t.sec_minutes(t.sec,5))
#結果為5 5