Sobes.tech
Назад к вопросам
Junior — Middle
84

Как отличаются статические методы от динамических в Python и в чем их основные особенности?

Компании, где спрашивали
МКБ Банк

Ответ от нейросети

sobes.tech AI

В Python статические и динамические методы отличаются способом вызова и тем, что они получают в качестве первого параметра.

  • Статические методы (@staticmethod) не получают автоматически ни ссылку на объект (self), ни на класс (cls). Они ведут себя как обычные функции, но находятся внутри класса для логической группировки. Их можно вызывать как через класс, так и через объект.

  • Динамические методы (обычные методы) получают первым параметром ссылку на объект (self). Они могут работать с состоянием конкретного экземпляра класса.

Пример:

class MyClass:
    @staticmethod
    def static_method(x, y):
        return x + y

    def instance_method(self, x):
        return x * 2

obj = MyClass()
print(MyClass.static_method(3, 4))  # 7
print(obj.static_method(5, 6))      # 11
print(obj.instance_method(5))       # 10

Основные особенности:

  • Статические методы не могут обращаться к атрибутам экземпляра или класса, если явно не передать их.
  • Динамические методы могут работать с состоянием объекта.

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