@classmethod
是 Python 中的一个装饰器,用于将方法定义为类方法。类方法的第一个参数通常是 cls
,代表类本身,而不是类的实例。这使得类方法可以访问和修改类的状态,例如修改类变量或创建类的实例。类方法常用于需要基于类而不是实例进行操作的场景,如工厂方法、多继承初始化等。
class People:
name = '小明'
@classmethod
def say_hello(cls):
print('同学你好, 我是' + cls.name)
print(cls)
People.say_hello() # 同学你好, 我是小明
<class '__main__.XiaoMing'>
classmethod 依旧是用于类中的方法,这表示这个方法将会是一个类方法
意味着该方法可以直接被调用无需实例化
但同样意味着它没有 self 参数
也无法访问实例化后的对象
相对于 staticmethod 的区别在于它会接收一个指向类本身的 cls 参数。