Python для продвинутых: ООП, типизация и тестированиеОткрытые материалыclassmethod, staticmethod и обычный метод в Python
classmethod, staticmethod и обычный метод в Python
Уроки курсаclassmethod, staticmethod и обычный метод в Python
staticmethod — функция в namespace класса
@staticmethod не получает автоматически ни self, ни cls. Это обычная функция, размещённая в классе, потому что предметно связана с ним.
Если функция нужна только внутренней реализации и не является частью понятного API типа, модульная функция часто проще. Staticmethod не даёт доступ к состоянию и не делает код «объектно-ориентированнее».
Выбор можно свести к трём вопросам: нужны поля конкретного объекта — instance method; нужен сам тип или альтернативный конструктор — classmethod; не нужен ни объект, ни тип, но операция естественно принадлежит публичному namespace класса — staticmethod. Не выбирайте декоратор по тому, сколько аргументов хочется скрыть.
