回覆列表
-
1 # 福律閣土地訴訟
-
2 # 華中文化工作室
描述
classmethod 修飾符對應的函式不需要例項化,不需要 self 引數,但第一個引數需要是表示自身類的 cls 引數,可以來呼叫類的屬性,類的方法,例項化物件等。
classmethod 語法:
classmethod
引數:
無
返回值:
返回函式的類方法。
例項
以下例項展示了 classmethod 的使用方法:
該方法不強制要求傳遞引數,如下宣告一個靜態方法:
函式語法:
staticmethod(function)
引數說明:
無
例項
classmethod和staticmethod在不需要例項化的情況下,能夠讓類方法在類以外直接呼叫。
區別在以下兩個方面:
1.classmethod類方法,必須把類作為第一個引數,「可以訪問類變數」,可以通過例項名或類名訪問;
2.staticmethod靜態方法,不強制傳入self或者cls,對類和例項都一無所知(相當於把類方法變成一個普通的方法,與類無關),「不能訪問類變數」,「也不能訪問例項變數」;可以通過例項名或類名訪問。
具體用途為:
1.classmethod類方法,依賴self或者cls傳參,所以必須寫在類裡,與類強關聯,可以在類之外,訪問類變數;
2.staticmethod靜態方法,完全獨立於類,因此不能訪問類方法。
就那麼簡單,根據是否需要訪問類變數,取決於是否需要訪問類方法。
說通俗點,就是方便在沒有例項化的情況下,直接呼叫類方法,上述兩個東西都能實現該目的。