python的@classmethod和@staticmethod的區別和使用


@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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM