Встречается на собеседованиях • сегодня
В чем разница между __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
интервью вопросы и ответы