靜態方法的使用場景: 如果在方法中不需要訪問任何實例方法和屬性,純粹地通過傳入參數並返回數據的功能性方法,那么它就適合用靜態方法來定義,
它節省了實例化對象的開銷成本,往往這種方法放在類外面的模塊層作為一個函數存在也是沒問題的,
而放在類中,僅為這個類服務。。
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>