classmethod() Class method decorator

Last updated: 2026-09-22

classmethod() Class method decorator

@classmethod marks a method whose first argument is the class itself (cls).

CategoryBuilt-in Functions
KindBuilt-in Function
Python Versionall

📝 Syntax

@classmethod
def func(cls, ...)

⚙️ Parameters

function RequiredThe function to wrap as a class method.

Returns:A classmethod descriptor, usable as a decorator.

💥 Raises

▶ Example

Edit the code, press Run, and see the result in the output panel:

Output:

2
More case studies coming soon — check back later.

❓ FAQ

QWhat is the difference between classmethod and staticmethod?
Aclassmethod receives cls (the class itself) as its first argument, so it can access class attributes and call other class methods; staticmethod receives no special argument and behaves like a plain function.
QCan a classmethod be invoked through an instance?
AYes. Both C().inc() and C.inc() are valid; whether called on the class or an instance, the first argument of a classmethod is always the class itself.
QWhat are classmethods typically used for?
AFactory methods (such as Date.today()), accessing or modifying class attributes, and defining alternative constructors to achieve polymorphic creation.
QWhy does cls.count += 1 in a classmethod modify the class variable?
ABecause cls is the class itself — modifying through cls changes the class attribute. If you wrote self.count instead, it would create an instance attribute; the two are different.
Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏