Выбор ответа Middle Типизация обновлено
Аннотация Self
Вопрос
Как аннотировать метод-строитель def with_name(self, name), который возвращает экземпляр того же класса, чтобы наследник получал свой тип?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: - Self из typing (3.11+). Self означает «тип того экземпляра, у которого вызван метод», поэтому у наследника Child().withname(...) анализатор выведет Child.
Варианты ответа
-> "Base", имя базового класса-> object, как самый общий тип-> type[Self]изtyping-> Selfизtyping(3.11+)правильный ответ
Разбор
Self означает «тип того экземпляра, у которого вызван метод», поэтому у наследника Child().with_name(...) анализатор выведет Child. Аннотация -> "Base" у наследника даст Base, и цепочка вызовов потеряет методы наследника. object и type здесь просто неверны.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.