Sobes.tech
Junior — Middle

Каква е целта на декоратора @staticmethod в Python и как се различава от обикновените методи на класа?

sobes.tech AI

Отговор от AI

Декораторът @staticmethod в Python се използва за дефиниране на метод вътре в клас, който не зависи от инстанция на класа и не приема автоматично параметъра self.

Разлики от обикновените методи:

  • Обикновените методи приемат като първи параметър self — препратка към текущия екземпляр на класа.
  • Статичните методи не приемат нито self, нито cls (препратка към класа).

Това означава, че статичният метод е просто функция, логически свързана с класа, но не използва неговото състояние.

Пример:

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

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

print(MyClass.static_method(3, 4))  # 7
obj = MyClass()
print(obj.instance_method(3, 4))   # 12

Статичните методи са полезни за помощни функции, които имат смисъл в контекста на класа, но не изискват достъп до неговите данни.