__getattribute__ и __getattr__ Это особые методы, которые выз | Разъяснивший Python
__getattribute__ и __getattr__
Это особые методы, которые вызываются при попытке получить какой-либо атрибут класса. Например, foo.var вызовет __getattribute__, а после, возможно __getattr__.
Отличие между методами только в том, что __getattribute__ используется всегда, а __getattr__ только если атрибут не найден.