Вопрос проверяет понимание механизма доступа к атрибутам в Python и различий между пользовательским вызовом и внутренним перехватом.
Короткий ответ
getattr(obj, name) — это функция, которая пытается получить атрибут по имени и может вернуть значение по умолчанию. __getattribute__ — это метод, который вызывается при любом доступе к атрибуту через точку, и он перехватывает весь механизм. Ошибка в __getattribute__ легко приводит к бесконечной рекурсии. Обычно для кастомной логики чаще используют __getattr__, а не __getattribute__.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.