教程 python tutorial

类方法与静态方法

Python 中的类方法和静态方法是类的两种特殊方法,它们可以在没有创建实例的情况下调用。

类方法 @classmethod

类方法是与类本身相关联的方法,而不是与对象的实例相关联。它通过 cls 参数访问类的属性和方法。

python
class Dog:
    species = "Canine"  # 类属性

    def __init__(self, name):
        self.name = name

    @classmethod
    def get_species(cls):
        return cls.species

print(Dog.get_species())  # 输出:Canine

@classmethod 修饰的方法,第一个参数是类本身 (cls),可以访问类属性并进行修改。

静态方法 @staticmethod

静态方法与类和实例都无关,它是普通的函数,只是定义在类的作用域内。静态方法不需要接受 self 或 cls 参数。

python
class Calculator:
    @staticmethod
    def add(a, b):
        return a + b

print(Calculator.add(5, 3))  # 输出:8

静态方法不访问类的属性或方法,适用于与类或实例无关的功能。

类方法与静态方法的区别

特性 类方法 (@classmethod) 静态方法 (@staticmethod)
第一个参数 cls (类本身) 无 self 或 cls 参数
访问范围 可以访问类属性和类方法 不能访问类属性或类方法
使用场景 用于需要访问或修改类的状态 用于与类及其实例无关的功能

总结

  • 类方法用于操作类的状态,通常用来定义工厂方法;
  • 静态方法不依赖于类或实例,适用于类的独立功能;
  • 使用 @classmethod 和 @staticmethod 修饰符来分别定义类方法和静态方法。