Вызывается при попытке доступа к атрибуту объекта.
__getattribute__(self, name)
self -- Ссылка на экземпляр.

name -- Имя атрибута, к которому был затребован доступ.

Непременно вызывается при попытке доступа к атрибуту экземпляра класса.
Метод должен вернуть вычисленное значение для указанного атрибута, либо поднять исключение AttributeError.

Внимание
При неявном обращении с помощью синтаксических конструкций или встроенных функций к атрибутам являющимся специальными методами, __getattribute__ может и не вызываться.

Чтобы избежать в методе бесконечной рекурсии, вместо прямого доступа к своим атрибутам он должен обратиться к одноимённому методу базового класса, например: object.__getattribute__(self, name).

    class A(object): 

my_first_attr = 1

def __getattribute__(self, name):

if name == 'my_second_attr':
return 'some'

else:
return object.__getattribute__(self, name)


a = A()
a.my_first_attr # 1
a.my_second_attr # some

Если кроме этого метода для класса также определён __getattr__, то он будет вызван в двух случаях:

  • Если __getattribute__ поднимет исключение AttributeError;
  • Если __getattribute__ вызовет его явно.

Синонимы поиска: object.__getattribute__, object, __getattribute__
На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.