В дополнение к обходным атрибутам экземпляра в интересах правильности, неявный специальный поиск метода обычно также обходит метод
__getattribute__()
даже метакласса объекта.Какие специальные методы обходят __getattribute__ в Python?
The docs отметить специальные методы, такие как __hash__
, __repr__
и __len__
, и я знаю из опыта, он также включает в себя __iter__
для Python 2.7.
Цитирую an answer to a related question:
«Magic
__methods__()
обрабатываются специально: они внутренне назначены на„слоты“в структуре типа данных, чтобы ускорить их просмотровых, и они только смотрели в них слоты «.
В поисках улучшения ответа на вопрос another question, мне нужно знать: какие методы, в частности, мы говорим?
Какие методы назначены слотам? –
Я думаю, что каждый метод указан [здесь] (http://docs.python.org/reference/datamodel.html#specialnames). В любом случае учтите, что это применимо только в том случае, если вы вызываете метод, используя «его синтаксис». Например, 'a + 5' не будет вызывать' __getattribute__', а 'a .__ add __ (5)' * будет * вызывать его. В основном '__getattribute__' вызывается всякий раз, когда вы используете точку (' .') для доступа к атрибуту. – Bakuriu
@ Бакуриу: Очень информативно, спасибо. – porgarmingduod