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
Статичните методи са полезни за помощни функции, които имат смисъл в контекста на класа, но не изискват достъп до неговите данни.