小能豆

Python 中 @staticmethod 和 @classmethod 有什么区别?

py

Python 中 @staticmethod 和 @classmethod 有什么区别?


阅读 30

收藏
2024-11-06

共1个答案

小能豆

  • @staticmethod:定义一个静态方法,该方法不依赖于类的实例,也不依赖于类的属性。静态方法的第一个参数不是 selfcls,因此它不能访问类的属性或方法。
  • @classmethod:定义一个类方法,该方法的第一个参数是 cls,它代表类本身,允许访问类的属性和方法。

示例

class MyClass:
    class_var = 0

    @staticmethod
    def static_method():
        print("这是静态方法")

    @classmethod
    def class_method(cls):
        print(f"这是类方法,类变量:{cls.class_var}")

obj = MyClass()
obj.static_method()   # 调用静态方法
obj.class_method()    # 调用类方法
2024-11-06