Выбор ответа Middle Декораторы обновлено

functools.total_ordering

Вопрос

Что делает декоратор класса @functools.total_ordering?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Достраивает сравнения по eq и одному из lt и т.п. Достаточно определить eq и, например, lt, и totalordering достроит le, gt, ge.

Варианты ответа

  1. Достраивает сравнения по __eq__ и одному из __lt__ и т.п.правильный ответ
  2. Сортирует атрибуты класса по алфавиту для __repr__
  3. Делает экземпляры неизменяемыми и хешируемыми по полям
  4. Генерирует __init__ и __repr__ по аннотациям класса

Разбор

Достаточно определить __eq__ и, например, __lt__, и total_ordering достроит __le__, __gt__, __ge__. Это пример декоратора класса, который модифицирует и возвращает класс. Генерацию __init__ делает @dataclass, неизменяемость даёт @dataclass(frozen=True).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.