Выбор ответа Senior Типизация обновлено
Вариантность в синтаксисе PEP 695
Вопрос
Как задаётся вариантность параметра типа в классе class Box[T]: ... (Python 3.12+)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Анализатор выводит её по тому, как используется T. PEP 695 ввёл автоматический вывод вариантности: если T встречается только в возвращаемых значениях, параметр ковариантный, если только в аргументах, контравариантный, иначе инвариантный.
Варианты ответа
- Через
class Box[+T]для ковариантности, как в Scala - Анализатор выводит её по тому, как используется
Tправильный ответ - Через
class Box[T: covariant]в квадратных скобках - Параметры нового синтаксиса всегда инвариантны
Разбор
PEP 695 ввёл автоматический вывод вариантности: если T встречается только в возвращаемых значениях, параметр ковариантный, если только в аргументах, контравариантный, иначе инвариантный. Знаков +T в Python нет, а T: X в скобках задаёт верхнюю границу, а не вариантность. В старом стиле вариантность указывали явно: TypeVar("T", covariant=True).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.