classmethod和staticmethod在不需要實(shí)例化的情況下,能夠讓類方法在類以外直接調(diào)用。
區(qū)別在以下兩個方面:
1.classmethod類方法,必須把類作為第一個參數(shù),「可以訪問類變量」,可以通過實(shí)例名或類名訪問;
2.staticmethod靜態(tài)方法,不強(qiáng)制傳入self或者cls,對類和實(shí)例都一無所知(相當(dāng)于把類方法變成一個普通的方法,與類無關(guān)),「不能訪問類變量」,「也不能訪問實(shí)例變量」;可以通過實(shí)例名或類名訪問。
具體用途為:
1.classmethod類方法,依賴self或者cls傳參,所以必須寫在類里,與類強(qiáng)關(guān)聯(lián),可以在類之外,訪問類變量;
2.staticmethod靜態(tài)方法,完全獨(dú)立于類,因此不能訪問類方法。
就那么簡單,根據(jù)是否需要訪問類變量,取決于是否需要訪問類方法。
說通俗點(diǎn),就是方便在沒有實(shí)例化的情況下,直接調(diào)用類方法,上述兩個東西都能實(shí)現(xiàn)該目的。