Python для продвинутых: ООП, типизация и тестированиеОткрытые материалыclassmethod, staticmethod и обычный метод в Python
classmethod, staticmethod и обычный метод в Python
Уроки курсаclassmethod, staticmethod и обычный метод в Python
classmethod и альтернативный конструктор
Метод с @classmethod получает класс в параметре cls. Это полезно для именованного конструктора и поведения, которое должно корректно работать у наследников.
class Account:
def __init__(self, balance: float):
self.balance = balance
@classmethod
def from_cents(cls, cents: int):
return cls(cents / 100)
Использование cls(...), а не жёсткого Account(...), сохраняет полиморфизм. Classmethod также может читать class-level конфигурацию, но общее изменяемое состояние класса требует осторожности.
