@classmethod 是一个装饰器,用于定义类方法。类方法是类所拥有的方法,而不是实例所拥有的方法,因此可以直接通过类名调用,不需要先创建实例。类方法的第一个参数通常为 cls,表示类本身,而不是实例。
例如:
class MyClass:
x = 0
def __init__(self):
self.__class__.x += 1
@classmethod
def get_count(cls):
return cls.x
在此示例中,get_count() 方法是一个类方法,使用 @classmethod 装饰器进行修饰。该方法返回类属性 x 的值,因为 x 是一个类属性,所以可以通过 cls.x 来访问。
可以通过类名直接调用 get_count() 方法,而不需要先创建 MyClass 类的实例:
print(MyClass.get_count()) # 输出 0
obj1 = MyClass()
print(MyClass.get_count()) # 输出 1
obj2 = MyClass()
print(MyClass.get_count()) # 输出 2
可以看到,每次创建一个 MyClass 对象实例,类属性 x 的值就会增加1,而不需要调用对象实例的方法来进行修改。