美文网首页
Python 实例方法、类方法和静态方法

Python 实例方法、类方法和静态方法

作者: tingshuo123 | 来源:发表于2019-04-03 12:08 被阅读0次
    
    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)
    

    执行结果:

    <__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
    

    结论

    上面的方法其实本质都是绑定在类上普通方法,只不过Python对不同的方法做了隐式传参
    @staticmethod 方法,没有隐式传参
    @classmethod 方法,会隐式传入类对象
    实例方法,会传入隐式实例对象

    相关文章

      网友评论

          本文标题:Python 实例方法、类方法和静态方法

          本文链接:https://www.haomeiwen.com/subject/avvabqtx.html