Этап 5 из 11 · ≈ 8 ч

ООП и модель данных

Основа с Junior

Классы, наследование и MRO, магические методы, дескрипторы, dataclass и Pydantic.

Что важно знать

  • __init__, __repr__, __eq__, __hash__, __len__.
  • @property, @classmethod, @staticmethod.
  • MRO — порядок поиска методов, C3-линеаризация.
  • Дескрипторы — основа property и методов.
  • dataclass — данные, Pydantic — данные с валидацией.

Критерии освоения

Junior ≈ 8 ч

  • Пишет классы со свойствами, наследованием и магическими методами
  • Использует dataclass для моделей данных

Практика. Сделать класс денежной суммы с операциями сравнения и сложения через магические методы.

Middle ≈ 8 ч

  • Объясняет MRO и super при множественном наследовании
  • Объясняет дескрипторы, __slots__ и метаклассы на уровне назначения
  • Выбирает между dataclass, NamedTuple и Pydantic

Практика. Реализовать валидируемое поле дескриптором и сравнить с property и Pydantic.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Что такое self и __init__ в классе?Junior

self — ссылка на текущий экземпляр, Python передаёт её в метод первым аргументом.

Полный разбор
Чем абстрактный базовый класс (ABC) отличается от Protocol?Middle

ABC — номинальная типизация: класс должен явно наследовать абстрактный класс, а нереализованные @abstractmethod не дадут создать экземпляр. Protocol (3.8) — структурная: подходит любой класс с нужными методами без наследования, проверку делает mypy или…

Полный разбор
Что такое метакласс и когда он действительно нужен?Senior

Класс — тоже объект, а метакласс — класс класса: он управляет созданием классов. По умолчанию это type. Метакласс нужен редко: регистрация подклассов и проверка их структуры обычно решаются __init_subclass__ или декоратором класса, они проще.

Полный разбор
Что такое магические методы? Чем __str__ отличается от __repr__?Junior

Магические методы (__имя__) — крючки, через которые объект поддерживает встроенные операции языка.

Полный разбор
Чем dataclass отличается от namedtuple и Pydantic-модели?Middle

@dataclass генерирует __init__, __repr__, __eq__ (опционально порядок, хеш, слоты) по аннотированным полям — обычный изменяемый класс без проверки типов. namedtuple — неизменяемый кортеж с именами полей, индексируется и распаковывается. Pydantic — валидация и…

Полный разбор
Как работают наследование, super() и MRO?Junior

MRO — порядок, в котором Python ищет метод по иерархии классов; super() вызывает следующий класс в MRO.

Полный разбор
Что такое @property и зачем он нужен?Junior

@property превращает метод в атрибут: снаружи obj.area, внутри — вычисление или проверка.

Полный разбор
Чем @staticmethod отличается от @classmethod?Junior

@classmethod получает класс (cls), @staticmethod не получает ничего — это обычная функция внутри класса.

Полный разбор

Разборы темы

← Вся карта «Python»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования