staticmethod

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

Синтаксис

staticmethod(function)

Аргументы

  • function:
    • Что означает: Функция, которую нужно преобразовать в статический метод.
    • Возможные значения: Любая вызываемая функция.

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

Возвращает объект staticmethod, который можно присвоить как атрибут класса.

Примеры использования

class MyClass:
    @staticmethod
    def greet():
        return "Hello, world!"

# Вызов без создания экземпляра
print(MyClass.greet())  # Вывод: "Hello, world!"

# Эквивалентно явному использованию staticmethod
class MyClass2:
    def greet():
        return "Hi!"
    greet = staticmethod(greet)

Эквивалентный код

class staticmethod:
    def __init__(self, function):
        self.function = function

    def __get__(self, instance, owner):
        return self.function

Частые ошибки

  1. Попытка использовать self или cls в статическом методе:

    class MyClass:
        @staticmethod
        def example():
            print(self)  # Ошибка: NameError
    

    Как исправить: Уберите ссылки на объект или класс.

Часто задаваемые вопросы

  1. Когда использовать staticmethod вместо обычных методов? Когда метод не использует ни экземпляр, ни класс, но логически принадлежит классу.