Junior — Middle
@staticmethod və @classmethod ilə elan olunan metodlar arasında, hansı arqumentləri qəbul etdikləri kontekstində nə fərq var?
sobes.tech Süni İntellekt
AI-dan cavab
Метод, объявленный с помощью @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