Sobes.tech
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