Выбор ответа Senior Типизация обновлено

Вариантность в синтаксисе PEP 695

Вопрос

Как задаётся вариантность параметра типа в классе class Box[T]: ... (Python 3.12+)?

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

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

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

Коротко

Правильный ответ: Анализатор выводит её по тому, как используется T. PEP 695 ввёл автоматический вывод вариантности: если T встречается только в возвращаемых значениях, параметр ковариантный, если только в аргументах, контравариантный, иначе инвариантный.

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

  1. Через class Box[+T] для ковариантности, как в Scala
  2. Анализатор выводит её по тому, как используется Tправильный ответ
  3. Через class Box[T: covariant] в квадратных скобках
  4. Параметры нового синтаксиса всегда инвариантны

Разбор

PEP 695 ввёл автоматический вывод вариантности: если T встречается только в возвращаемых значениях, параметр ковариантный, если только в аргументах, контравариантный, иначе инвариантный. Знаков +T в Python нет, а T: X в скобках задаёт верхнюю границу, а не вариантность. В старом стиле вариантность указывали явно: TypeVar("T", covariant=True).

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

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