@classmethod
classmethod 修飾符對應的函數不需要實例化,不需要 self 參數,但第一個參數需要是表示自身類的 cls 參數,可以來調用類的屬性,類的方法,實例化對象等。
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
@staticmethod
python staticmethod 返回函數的靜態方法。
class C(object): @staticmethod def f(): print('runoob'); C.f(); # 靜態方法無需實例化 cobj = C() cobj.f() # 也可以實例化后調用
輸出結果如下
runoob
runoob