Встречается на 1% собеседований по Python
В чем разница между __getattribute__ и __getattr__ в Python
Оба метода используются для доступа к атрибутам, но работают в разных случаях:
__getattribute__ вызывается всегда при попытке доступа к любому атрибуту объекта, даже если атрибут существует. Это низкоуровневый метод, который реализует сам механизм поиска атрибутов.
__getattr__ вызывается только если атрибут не найден стандартными способами (через __dict__, дескрипторы и т.д.). Используется для обработки "несуществующих" атрибутов.
Пример:
python
class Test:
def __init__(self):
self.x = 10
def __getattribute__(self, name):
print(f"Getting {name}")
return super().__getattribute__(name)
def __getattr__(self, name):
print(f"Attribute {name} not found")
return 0
t = Test()
print(t.x) # Вызовет __getattribute__
print(t.y) # Сначала __getattribute__, потом __getattr__Важно: в __getattribute__ нужно быть осторожным с рекурсией - обращение к атрибутам внутри него должно идти через super() или напрямую к __dict__.

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