Junior — Middle
Qual é a diferença entre os métodos declarados com @staticmethod e @classmethod no contexto de quais argumentos eles aceitam?
sobes.tech IA
Resposta da IA
Метод, объявленный с помощью @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