Python 實例方法、類方法和靜態(tài)方法


class C:
    def f1(self, n):
        print(self, n)
        return n
    # 類方法對象
    @classmethod
    def f2(cls, n):
        print(cls, n)
        return n

    @staticmethod
    def f3(n):
        print(n)
        return n

if __name__ == "__main__":
    c = C()
    n = 1
    c.f1(n)
    C.f1(c, n)
    foo = C.f1
    foo(c, n)

    c.f2(n)
    C.f2(n)
    bar = C.f2
    bar(n)

    c.f3(n)
    C.f3(n)
    f = C.f3
    f(n)

執(zhí)行結(jié)果:

<__main__.C object at 0x0000021D54BD2828> 1
<__main__.C object at 0x0000021D54BD2828> 1
<__main__.C object at 0x0000021D54BD2828> 1
<class '__main__.C'> 1
<class '__main__.C'> 1
<class '__main__.C'> 1
1
1
1

結(jié)論

上面的方法其實本質(zhì)都是綁定在類上普通方法,只不過Python對不同的方法做了隱式傳參
@staticmethod 方法,沒有隱式傳參
@classmethod 方法,會隱式傳入類對象
實例方法,會傳入隱式實例對象

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容