@staticmethod
и @classmethod
в Python, и чем они отличаются?
Декораторы @staticmethod
и @classmethod
используются для создания методов, которые не требуют экземпляра класса. @staticmethod
— это метод, который не зависит от экземпляра или самого класса, а @classmethod
получает доступ к самому классу через первый параметр cls
.
class MyClass:
@staticmethod
def static_method():
return "Это статический метод"
@classmethod
def class_method(cls):
return f"Это метод класса {cls.__name__}"
# Использование
print(MyClass.static_method()) # Это статический метод
print(MyClass.class_method()) # Это метод класса MyClass
🗣️ В этом примере static_method ничего не знает о классе, в то время как class_method может взаимодействовать с классом, к которому он принадлежит. Используйте их в зависимости от того, нужно ли вам взаимодействие с классом.