Что такое статический метод в Python и когда его использовать

«Что такое статический метод в Python и когда его использовать» — вопрос из категории ООП, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Статический метод — это метод, который принадлежит классу, а не его экземпляру (объекту). Он не имеет доступа к состоянию экземпляра (self) или класса (cls).

Для его объявления используется декоратор @staticmethod.

Ключевые особенности:

  • Не принимает self или cls в качестве первого обязательного аргумента.
  • Может быть вызван как на классе, так и на его экземпляре, но результат будет одинаковым.
  • Не может изменять состояние объекта или класса.

Когда использовать: Статические методы идеально подходят для создания утилитарных или вспомогательных функций, которые логически связаны с классом, но не зависят от его внутреннего состояния.

Пример:

class TemperatureConverter:
    @staticmethod
    def celsius_to_fahrenheit(celsius: float) -> float:
        """Конвертирует градусы Цельсия в Фаренгейты."""
        return (celsius * 9/5) + 32

# Вызов метода напрямую через класс, без создания экземпляра
fahrenheit = TemperatureConverter.celsius_to_fahrenheit(25)
print(f"25°C is {fahrenheit}°F") # -> 25°C is 77.0°F

Отличие от @classmethod:

  • @classmethod получает класс (cls) в качестве первого аргумента и может работать с атрибутами класса (например, для создания фабричных методов).
  • @staticmethod полностью изолирован и ничего не знает о классе или его экземплярах.