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).
| Category | Built-in Functions |
|---|---|
| Kind | Built-in Function |
| Python Version | all |
📝 Syntax
@classmethod
def func(cls, ...)
⚙️ Parameters
| function Required | The function to wrap as a class method. |
|---|
Returns:A classmethod descriptor, usable as a decorator.
💥 Raises
TypeError— Raised when the argument is not callable.
▶ Example
Edit the code, press Run, and see the result in the output panel:
Output:
2
🏷️ Related Built-in Functions
💡 Related Cases
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.