В чём разница между classmethod и staticmethod?

Middle
357 просмотров
AFK Offer AI

classmethod получает первым аргументом cls — ссылку на класс, а не на экземпляр. Обычно используется как альтернативный конструктор: User.from_dict(data). staticmethod не получает ни self, ни cls — это просто функция, привязанная к классу для логической группировки. classmethod учитывает наследование — cls будет подклассом, если вызван из подкласса. staticmethod — нет, он одинаков для всей иерархии. Если метод не использует ни экземпляр, ни класс — staticmethod, если использует класс — classmethod.

Следующий вопрос

Что полезного в модуле collections?