天天看點

Python中 staticmethod靜态方法和classmethod類方法

class C(object):
    # 靜态方法
    @staticmethod
    def f():
        print('runoob')


class A(object):
    bar = 1
    def func1(self):  
        print ('foo')
    # 類方法 
    @classmethod
    def func2(cls):
        print ('func2')
        print (cls.bar)
        cls().func1()   # 調用 foo 方法
 
A.func2()      # 不需要執行個體化
 
C.f()          # 靜态方法無需執行個體化

c = C()        # 也可以執行個體化後調用
c.f()          
           

靜态方法: 類可以不用執行個體化就可以調用該方法 C.f(),當然也可以執行個體化後調用 C().f()

類方法: classmethod 修飾符對應的函數不需要執行個體化,不需要 self 參數,但第一個參數需要是表示自身類的 cls 參數,可以來調用類的屬性,類的方法,執行個體化對象等。