Junior — Middle
67
Какое отличие между методами, объявляемыми с помощью @staticmethod и @classmethod, в контексте того, какие аргументы они принимают?
Ответ от нейросети
sobes.tech AI
Метод, объявленный с помощью @staticmethod, не принимает автоматически ни экземпляр класса (self), ни сам класс (cls) в качестве первого аргумента. Это обычная функция, которая находится внутри класса для удобства организации кода.
Метод, объявленный с помощью @classmethod, автоматически получает класс (обычно обозначается как cls) в качестве первого аргумента, а не экземпляр. Это позволяет методу работать с самим классом, например, создавать новые экземпляры или изменять свойства класса.
Пример:
class MyClass:
@staticmethod
def static_method(x):
return x * 2
@classmethod
def class_method(cls, x):
return cls.static_method(x) + 1
print(MyClass.static_method(5)) # 10
print(MyClass.class_method(5)) # 11