回覆列表
  • 1 # 福律閣土地訴訟

    classmethod和staticmethod在不需要例項化的情況下,能夠讓類方法在類以外直接呼叫。

    區別在以下兩個方面:

    1.classmethod類方法,必須把類作為第一個引數,「可以訪問類變數」,可以通過例項名或類名訪問;

    2.staticmethod靜態方法,不強制傳入self或者cls,對類和例項都一無所知(相當於把類方法變成一個普通的方法,與類無關),「不能訪問類變數」,「也不能訪問例項變數」;可以通過例項名或類名訪問。

    具體用途為:

    1.classmethod類方法,依賴self或者cls傳參,所以必須寫在類裡,與類強關聯,可以在類之外,訪問類變數;

    2.staticmethod靜態方法,完全獨立於類,因此不能訪問類方法。

    就那麼簡單,根據是否需要訪問類變數,取決於是否需要訪問類方法。

    說通俗點,就是方便在沒有例項化的情況下,直接呼叫類方法,上述兩個東西都能實現該目的。

  • 2 # 華中文化工作室

    描述

    classmethod 修飾符對應的函式不需要例項化,不需要 self 引數,但第一個引數需要是表示自身類的 cls 引數,可以來呼叫類的屬性,類的方法,例項化物件等。

    classmethod 語法:

    classmethod

    引數:

    返回值:

    返回函式的類方法。

    例項

    以下例項展示了 classmethod 的使用方法:

    該方法不強制要求傳遞引數,如下宣告一個靜態方法:

    函式語法:

    staticmethod(function)

    引數說明:

    例項

  • 中秋節和大豐收的關聯?
  • 為什麼很多人建議白酒不和啤酒混著喝?