靜態方法的使用場景: 如果在方法中不需要訪問任何實例方法和屬性,純粹地通過傳入參數並返回數據的功能性方法,那么它就適合用靜態方法來定義,
它節省了實例化對象的開銷成本,往往這種方法放在類外面的模塊層作為一個函數存在也是沒問題的,
而放在類中,僅為這個類服務。。
staticmethod用於修飾類中的方法,使其可以在不創建類實例的情況下調用方法,這樣做的好處是執行效率比較高。
當然,也可以像一般的方法一樣用實例調用該方法。該方法一般被稱為靜態方法。靜態方法不可以引用類中的屬性或方法,其參數列表也不需要約定的默認參數self。
我個人覺得,靜態方法就是類對外部函數的封裝,有助於優化代碼結構和提高程序的可讀性。當然了,被封裝的方法應該盡可能的和封裝它的類的功能相匹配。
class A: def test(self,a): self.a=a print("我是test") # return self.a @staticmethod def m(): print("我是staticmethod") b=A() print(b) #<__main__.A object at 0x0000026D2197D808> print(b.test)#<bound method A.test of <__main__.A object at 0x00000218C233FE08>> print(A.test) #<function A.test at 0x00000218C2418168> print(A.m) #<function A.m at 0x0000026D21987438>