В чём разница между `@classmethod`, `@staticmethod` и обычным методом класса?
Pythonmediummiddle
Варианты ответа
Обычный метод получает self (instance), classmethod получает cls (class), staticmethod не получает ничего. Classmethod часто для альтернативных конструкторов, static — для утилит без state
Обычный метод имеет доступ к self и атрибутам, classmethod не работает с экземплярами, staticmethod создаёт singleton класса. Все три синтаксически идентичны и взаимозаменяемы
staticmethod — классический метод класса, classmethod — для override родителя, обычный — instance метод. На самом деле Python трактует первый аргумент как mostly декоративный
Все три типа methods трактуются одинаково — Python автоматически биндит self/cls в зависимости от контекста вызова. Декораторы нужны только для документации, performance одинаковый
Разбор ответа
Подробный разбор с объяснением «почему правильный ответ верный» и почему остальные неверны — после регистрации.
2475 вопросов с разбором, quiz-режим с проверкой, AI-собес и подготовка к интервью аналитика.