classmethod() 类方法装饰器
最后更新:2026-09-22
classmethod() 类方法装饰器
@classmethod 把一个方法标记为类方法,第一个参数是 cls(类本身)。
| 分类 | 内置函数 |
|---|---|
| 类型 | 内置函数 |
| Python 版本 | all |
📝 语法
@classmethod
def func(cls, ...)
⚙️ 参数
| function 必选 | 要包装为类方法的函数。 |
|---|
返回值:classmethod 描述符对象,可直接作为装饰器使用。
💥 异常
TypeError— 当传入的参数不可调用时抛出。
▶ 示例
编辑下方代码,点击运行,在输出面板查看结果:
运行结果:
2
🏷️ 相关内置函数
💡 相关案例
更多实战案例即将上线,敬请期待。
❓ 常见问题
Qclassmethod 和 staticmethod 有什么区别?
Aclassmethod 的第一个参数是 cls(类本身),能访问类属性、调用其他类方法;staticmethod 不接收任何特殊参数,和普通函数一样。
Q类方法可以用实例调用吗?
A可以,C().inc() 和 C.inc() 都有效;无论从类还是实例调用,classmethod 的第一个参数都是类本身。
Q类方法通常用来做什么?
A做工厂方法(如 Date.today())、访问或修改类属性、以及定义替代构造函数实现多态创建。
Q为什么类方法里 cls.count += 1 能修改类变量?
A因为 cls 就是类本身,通过 cls 修改的是类属性;如果写成 self.count 就变成实例属性了,两者不同。