【Python】Python静态方法和类方法区别?

在Python中,静态方法和类方法的区别如下:

  1. 定义方式不同
  • 静态方法使用@staticmethod装饰器
  • 类方法使用@classmethod装饰器
## python www.itzhimei.com 代码
class A:
    @staticmethod
    def foo():
        pass

    @classmethod
    def bar(cls):
        pass
  1. 传递参数不同
  • 静态方法不传入任何参数
  • 类方法第一个参数是类本身(cls)
## python www.itzhimei.com 代码
class A:
    @staticmethod
    def foo():
        print('static method')

    @classmethod
    def bar(cls):
        print('class method', cls)
  1. 调用方式不同
  • 静态方法通过类名或实例名调用
  • 类方法只能通过类名调用
## python www.itzhimei.com 代码
A.foo() 
a = A()
a.foo() 

A.bar() # 正确
a.bar() #错误
  1. 使用场景不同
  • 静态方法与类无强绑定,不需要类信息
  • 类方法用于类内部,需要访问类信息

综上,静态方法独立于类和实例,类方法依赖于类而不依赖实例。