Check

Разница между `__getattr__` и `__getattribute__`

Python Senior Яндекс
Объясните разницу между методами `__getattr__` и `__getattribute__` в классе. Когда целесообразно использовать каждый из них?
Ответы
__getattr__ vs __getattribute__
`__getattribute__` вызывается вообще для любого доступа к атрибуту экземпляра. Неправильная реализация легко приводит к рекурсии и сломанному классу. `__getattr__` вызывается только тогда, когда обычный поиск атрибута завершился неудачно (атрибут не найден в `__dict__`, `__getattribute__` и т.д.). Часто: - `__getattr__` используют для ленивой загрузки, проксирования, fallback-логики; - `__getattribute__` — для очень низкоуровневых вещей (прокси-объекты, трейсинг), и с большой осторожностью.