object.__getattribute__
Вызывается при попытке доступа к атрибуту объекта.
__getattribute__(self, name)
self -- Ссылка на экземпляр.
name -- Имя атрибута, к которому был затребован доступ.
name -- Имя атрибута, к которому был затребован доступ.
Непременно вызывается при попытке доступа к атрибуту экземпляра класса.
Метод должен вернуть вычисленное значение для указанного атрибута, либо поднять исключение AttributeError.
Чтобы избежать в методе бесконечной рекурсии, вместо прямого доступа к своим атрибутам он должен обратиться к одноимённому методу базового класса, например:
Если кроме этого метода для класса также определён __getattr__, то он будет вызван в двух случаях:
Метод должен вернуть вычисленное значение для указанного атрибута, либо поднять исключение 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__
В разделе «object (объект)»:
file (файл)
object.__add__
object.__bool__
object.__call__
object.__ceil__
object.__class__
object.__cmp__
object.__contains__
object.__copy__
object.__deepcopy__
object.__del__
object.__delattr__
object.__delete__
object.__delitem__
object.__delslice__
object.__dir__
object.__enter__
object.__eq__
object.__exit__
object.__floor__
object.__format__
object.__ge__
object.__get__
object.__getattr__
object.__getitem__
object.__getslice__
object.__getstate__
object.__gt__
object.__hash__
object.__init__
object.__init_subclass__
object.__iter__
object.__le__
object.__len__
object.__lt__
object.__missing__
object.__ne__
object.__new__
object.__next__
object.next
object.__nonzero__
object.__qualname__
object.__rcmp__
object.__repr__
object.__reversed__
object.__set__
object.__setattr__
object.__setitem__
object.__set_name__
object.__setslice__
object.__setstate__
object.__slots__
object.__str__
object.__sub__
object.__subclasses__
object.__unicode__
property (свойство)
Protocols (протоколы)
slice (срез)
Встроенные исключения
На заметку
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.