Встречается на собеседованиях • сегодня
Как __getattr__ и __getattribute__ влияют на получение атрибута
__getattr__ и __getattribute__ — это методы для управления доступом к атрибутам, но работают они по-разному:
__getattribute__вызывается всегда при обращении к любому атрибуту, даже если он существует. Если атрибут не найден, он должен вызватьAttributeError, иначе может возникнуть рекурсия.
- **
__getattr__** вызывается **только если** атрибут не найден стандартными способами (черезdict`, свойства и т.д.).
Пример:
python
class Example:
def __getattribute__(self, name):
print(f"__getattribute__: {name}")
return super().__getattribute__(name) # Важно!
def __getattr__(self, name):
print(f"__getattr__: {name}")
return 42
obj = Example()
obj.x = 10
print(obj.x) # Вызовет __getattribute__
print(obj.y) # Сначала __getattribute__, потом __getattr__Важно:
__getattribute__требует вызоваsuper()или обработкиAttributeError.__getattr__— «последняя линия защиты».- Переопределение
__getattribute__может замедлить код.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы