static методы и classmethod методы в python, различия между ними и примеры использования
В Python существуют два типа методов, которые могут быть привязаны к классу, а не к экземпляру объекта: статические методы (static methods) и методы класса (class methods).
Статические методы (@staticmethod
):
@staticmethod
):Статические методы объявляются с использованием декоратора @staticmethod
и не принимают автоматически передаваемый первым параметром self
или cls
. Они не имеют доступа к атрибутам экземпляра или класса.
Методы класса (@classmethod
):
@classmethod
):Методы класса объявляются с использованием декоратора @classmethod
и принимают автоматически передаваемый первым параметром cls
(класс). Они могут использоваться для выполнения операций, связанных с классом, а не с конкретным экземпляром.
Различия:
Параметры:
В статическом методе нет автоматически передаваемого параметра
self
илиcls
.В методе класса автоматически передается параметр
cls
.
Доступ к атрибутам:
Статические методы не имеют доступа к атрибутам экземпляра (
self
) или класса (cls
).Методы класса могут иметь доступ к атрибутам класса, но не к атрибутам экземпляра.
Использование:
Статические методы удобны, когда логика метода не зависит от конкретного экземпляра или класса.
Методы класса полезны, когда операции связаны с классом и могут воздействовать на атрибуты класса.
Оба типа методов могут быть вызваны непосредственно относительно класса, без создания экземпляра объекта.
Last updated