關於@staticmethod,這裏拋開修飾器的概念不談,只簡單談它的做用和用法。
staticmethod用於修飾類中的方法,使其能夠在不建立類實例的狀況下調用方法,這樣作的好處是執行效率比較高。固然,也能夠像通常的方法同樣用實例調用該方法。該方法通常被稱爲靜態方法。靜態方法不能夠引用類中的屬性或方法,其參數列表也不須要約定的默認參數self。我我的以爲,靜態方法就是類對外部函數的封裝,有助於優化代碼結構和提升程序的可讀性。固然了,被封裝的方法應該儘量的和封裝它的類的功能相匹配。
這裏給出一個樣例來直觀的說明一下其用法。python
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