1. 程式人生 > >Python 中的 @staticmethod和@classmethod(關鍵詞:Python/靜態方法/類方法/@staticmethod/@classmethod)

Python 中的 @staticmethod和@classmethod(關鍵詞:Python/靜態方法/類方法/@staticmethod/@classmethod)

結合書籍,我的理解
靜態方法: 出現在類中,第 1 個引數不是例項、也不是類, 由 @staticmethod 裝飾的方法;
類方法: 出現在類中,第 1 個引數不是例項、而是類, 由 @classmethod 裝飾的方法。

class C:
        @staticmethod
        def smeth(x):
                print(x)

        @classmethod
        def cmeth(cls, x):
                print(cls, x)

輸出:

>>> c1 = C()
>>> c1.smeth(1)
1
>>> C.smeth(2)
2
>>> c1.cmeth(1)
<class 'q.C'> 1
>>> C.cmeth(1)
<class 'q.C'> 1

參考文獻:

  1. 《Python 學習手冊(第 4 版)》 - ;
  2. 3 @staticmethod和@classmethod