В Python классы могут иметь следующие типы методов:
Методы экземпляра (Instance Methods)
Принимают в качестве первого аргумента self (ссылка на экземпляр класса). Работают с атрибутами конкретного экземпляра.
python
Методы класса (Class Methods)
Принимают в качестве первого аргумента cls (ссылка на сам класс). Объявляются с использованием декоратора @classmethod. Могут использоваться как альтернативные конструкторы или для доступа к атрибутам класса.
python
Статические методы (Static Methods)
Не принимают ни self, ни cls. Объявляются с использованием декоратора @staticmethod. Не имеют доступа к атрибутам экземпляра или класса, служат для группировки связанных функций внутри класса, где нет необходимости в доступе к состоянию класса или экземпляра.
python
Специальные методы (Special Methods / Dunder Methods)
Имеют имена, начинающиеся и заканчивающиеся двойным подчеркиванием (например, __init__, __str__, __len__). Используются для определения поведения класса при использовании встроенных функций и операторов.
python
Сводная таблица:
| Тип метода | Первый аргумент | Декоратор | Доступ к состоянию | Типичное назначение |
|---|---|---|---|---|
| Метод экземпляра | self | Нет | Экземпляра | Работа с данными конкретного объекта |
| Метод класса | cls | @classmethod | Класса | Альтернативные конструкторы, доступ к атрибутам класса |
| Статический метод | Нет | @staticmethod | Нет | Вспомогательные функции, не зависящие от состояния |
| Специальный метод | Зависит от метода | Нет | Экземпляра/Класса | Переопределение операций и встроенных функций |