Ответ
Статический метод — это метод, который принадлежит классу, а не его экземпляру (объекту). Он не имеет доступа к состоянию экземпляра (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полностью изолирован и ничего не знает о классе или его экземплярах.