Сообщить об ошибке.

Преобразует метод класса в статический метод этого класса

Синтаксис:

staticmethod(function)

Параметры:

  • function - функция, которая будет статичным методом.

Возвращаемое значение:

  • статический метод класса.

Описание:

Функция - декоратор staticmethod() преобразует метод класса в статический метод этого класса. Статический метод не получает неявный первый аргумент self класса.

Дополнительно смотрите материал "Что такое статический метод класса и для чего он нужен?".

Чтобы объявить статический метод, используйте эту идиому:

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...

Проще говоря, декоратор @staticmethod превращает метод, определенный внутри класса, в обычную функцию, которая не имеет доступа к экземпляру класса self, поэтому ее можно вызывать без создания экземпляра класса. Следовательно статический метод может быть вызван либо в классе C.f(), либо в экземпляре класса C().f().

Статические методы делают код более читабельным и повторно используемым поскольку не знают о состоянии текущего экземпляра класса. Также статические методы более удобны по сравнению с обычными функциями в отношении их импорта, так как нет необходимости импортировать каждую функцию отдельно. Выполняется импорт только одного класса с набором определенных в нем статических методов.

Статические методы в Python похожи на те, которые есть в Java или C++. Еще посмотрите вариант classmethod(), который полезен для создания конструкторов альтернативных классов.

Как и все декораторы, staticmethod() можно вызывать как обычную функцию и что-то делать с ее результатом. Это необходимо в некоторых случаях, когда вам нужна ссылка на функцию из тела класса, и вы хотите избежать автоматического преобразования в метод экземпляра. Для этих случаев используйте эту идиому:

class C:
    builtin_open = staticmethod(open)

Изменено в Python 3.10: статические методы теперь наследуют атрибуты метода (__module__, __name__, __qualname__, __doc__ и __annotations__), имеют новый атрибут __wrapped__ и теперь могут быть вызваны как обычные функции.