classmethod類方法,可以調用類而非其實例,因此主要用途是在類實例化前進行一定的處理,譬如定義一個函數,對要傳入實例的不符合格式的參數進行規整,然后直接調用該函數即可進行實例化。
例如:
class A:
def __init__(self,a,b,c):
self.a=a
...
@classmethod
def turn(cls,h): #例如h為含有a,b,c的元祖
return cls(h[0],cls[1],cls[2])
這樣就會用A.turn(H)直接得到A的實例。#H為元祖
staticmethod靜態方法,本身這類函數可以直接放在類外面,作為全局函數來定義,無任何大問題。但如果這個函數基本就是為這個類服務的,那么放在類里面,就可以用該方法。這樣的好處是,可以使得代碼整潔,易于維護,同時縮小其域范圍,節省內存等。真需要調用時,在函數名前加類名一樣是可以在外部直接調用的。
該方法內部不需要傳入self或cls參數。
新聞熱點
疑難解答