Sobes.tech
Junior — Middle

Aký je rozdiel medzi metódami deklarovanými pomocou @staticmethod a @classmethod v kontexte toho, aké argumenty prijímajú?

sobes.tech AI

Odpoveď od 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