1. 程式人生 > >python中@classmethod @staticmethod區別

python中@classmethod @staticmethod區別

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區別