1. 程式人生 > >Python中的 @[email pro

Python中的 @[email pro

python類中有三種方法,常見的是例項方法,另外兩種是staticmethod裝飾的靜態方法,和classmethod裝飾的類方法。

 

1、對比

      流暢的python裡,用一個例子進行了對比:

      (1)兩個方法都不依賴於例項,類可以直接呼叫;

      (2)classmethod中,第一個引數為相應的類;staticmethod不是。

2、使用場景

       1、靜態方法適合,在該方法中,不需要訪問任何例項方法和屬性,只實現傳入引數、返回資料的功能;

  2、類方法適合,作為工廠方法建立例項物件,需要在方法中呼叫靜態類(與例項無關),那麼就可以定義為類方法。同時,

不能定義為靜態方法:需要顯示的呼叫類A,不便於被繼承;

  3、流暢的python裡認為,staticmethod可以被classmethod替代,staticmethod無用。

class A:

    @staticmethod
    def m1()
        pass

    @staticmethod
    def m2():
        A.m1() # bad

    @classmethod
    def m3(cls):
        cls.m1() # good

 

參考 :https://zhuanlan.zhihu.com/p/28010894