python中@classmethod @staticmethod區別
阿新 • • 發佈:2019-03-18
python bject 函數 需要 @class 輸出結果 icm nbsp static
python staticmethod 返回函數的靜態方法。
該方法不強制要求傳遞參數,如下聲明一個靜態方法:
class C(object): @staticmethod def f(arg1, arg2, ...): ...
以上實例聲明了靜態方法 f,類可以不用實例化就可以調用該方法 C.f(),當然也可以實例化後調用 C().f()。
#!/usr/bin/python # -*- coding: UTF-8 -*- class A(object): bar = 1 def func1(self):print (‘foo‘) @classmethod def func2(cls): print (‘func2‘) print (cls.bar) cls().func1() # 調用 foo 方法 A.func2() # 不需要實例化
輸出結果為:
func2 1 foo
修飾符對應的函數不需要實例化,不需要 self 參數,但第一個參數需要是表示自身類的 cls 參數,可以來調用類的屬性,類的方法,實例化對象等。
python中@classmethod @staticmethod區別