【Python基础知识库】Python中@staticmethod和@classmethod和实例方法

    技术2025-11-26  22

    what-is-the-difference-between-staticmethod-and-classmethod-in-python

    real python上详细知识

    静态方法

    静态方法:其实和普通的方法一样,不需要对谁进行绑定,必须有@staticmethod修饰,类和实例都可以访问静态方法,调用方式A。static_foo(x)和a.static_foo(x)。

    类方法

    类方法:即在类里定义的函数方法,需要@classmethod修饰,并且有个隐藏参数cls,传递的是类而不是实例,类可以访问类方法,也可以访问实例方法,访问实例方法时必须带参数self。

    实例方法

    实例方法的调用离不开实例,必须有个参数self,把实例自己传给函数,调用是够是a.foo(x)与foo(a, x)等价。实例可以访问实例方法,也可以访问类方法。

    def foo(x)print("executing foo(%s)" % (x)) class A(object): # 实例方法 def foo(self, x): print("executing foo(%s, %s)" % (self, x)) # 类方法 @classmethod def class_foo(cls, x): print("executing foo(%s, %s)" % (cls, x)") # 静态方法 @staticmethod def static_foo(x): print("executing foo(%s)" % x) a = A() 实例/类实例方法类方法静态方法实例: a = A()a.foo(x)a.class_foo(x)a.static_foo(x)类: A不可用A.class_foo(x)A.static_foo(x)
    Processed: 0.017, SQL: 9