У атрибута _name есть только соглашение о внутреннем использовании. Для __name Python применяет name mangling: обратиться можно как obj._ClassName__name.
Как обратиться к приватному атрибуту Python без getter/setter?
У атрибута _name есть только соглашение о внутреннем использовании. Для __name Python применяет name mangling: обратиться можно как obj._ClassName__name.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
У атрибута _name есть только соглашение о внутреннем использовании. Для __name Python применяет name mangling: обратиться можно как obj._ClassName__name.
Например, class Vault: __code = 7 создаёт атрибут, доступный через Vault._Vault__code. Это не криптографическая защита и не абсолютный запрет доступа: преобразование имени прежде всего уменьшает случайные конфликты в наследовании.
В обычном коде обходить публичный интерфейс нежелательно — внутреннее имя может измениться без сохранения совместимости. Для нужного чтения лучше предусмотренное свойство или метод. Двойные подчёркивания с обеих сторон, как __len__, относятся к специальным именам и не означают такую приватность.