Выбор ответа Middle ООП и dataclasses обновлено
Двойное подчёркивание в имени атрибута
Вопрос
Что происходит с атрибутом self.__token внутри класса Client?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Имя искажается в Clienttoken, чтобы не конфликтовать с наследниками. Name mangling переписывает имя на этапе компиляции класса, и снаружи атрибут доступен как obj.Clienttoken.
Варианты ответа
- Имя искажается в
_Client__token, чтобы не конфликтовать с наследникамиправильный ответ - Атрибут становится по-настоящему приватным, и доступ снаружи класса невозможен
- Атрибут становится атрибутом класса
- Python бросает
SyntaxError: двойное подчёркивание зарезервировано
Разбор
Name mangling переписывает имя на этапе компиляции класса, и снаружи атрибут доступен как obj._Client__token. Настоящей приватности в Python нет, это защита от случайного затирания атрибута в подклассе. Атрибут остаётся атрибутом экземпляра. Зарезервированы имена вида __x__ (dunder), но и их писать можно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.