Этот вопрос проверяет понимание механизма name mangling (имя-преобразование) в Python и различие между "обычными" двойными подчёркиваниями и "магическими" методами __init__, __str__ и т.п.
Короткий ответ
Имена, начинающиеся с двух подчёркиваний и не заканчивающиеся двумя подчёркиваниями (__name) в классах, подвергаются механизму name mangling: интерпретатор переписывает имя в _ClassName__name. Это помогает избежать конфликтов имён в иерархии наследования и служит более сильной формой инкапсуляции, чем одинарный _. Доступ к таким атрибутам возможен, но их труднее случайно переопределить или использовать. Отдельно есть "магические" методы с двойными подчёркиваниями по обе стороны (__init__, __len__), которые не мэнглятся и используются самим Python для реализации протоколов и операторов.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.