美文网首页
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