Oprócz omijania dowolnych atrybutów instancji w interesie poprawności, domyślne wyszukiwanie metod specjalnych również pomija metodę
__getattribute__()
nawet metaklasu obiektu.Jakie specjalne metody pomijają __getattribute__ w Pythonie?
The docs wspomnieć specjalne metody, takie jak __hash__
, __repr__
i __len__
i wiem z doświadczenia, że obejmuje również __iter__
dla Pythona 2.7.
Cytując an answer to a related question:
„Magia
__methods__()
są traktowane specjalnie: są wewnętrznie przypisane do«szczeliny»w strukturze typu danych w celu przyspieszenia ich przeglądowej, a są one wzrok tylko w tych automaty. "
W dążeniu do poprawy moją odpowiedź na another question, muszę wiedzieć: Jakie metody konkretnie mówimy?
Jakie metody są przypisane do gniazd? –
Myślę, że każda metoda wymieniona [tutaj] (http://docs.python.org/reference/datamodel.html#specialnames). W każdym razie weź pod uwagę, że ma to zastosowanie tylko wtedy, gdy wywołasz metodę używając "jej składni". Na przykład 'a + 5' nie wywołuje' __getattribute__', natomiast 'a .__ dodaj __ (5)' * wywoła *. Zasadniczo "__getattribute__" jest wywoływane za każdym razem, gdy używasz kropki ('.') w celu uzyskania dostępu do atrybutu. – Bakuriu
@Bururiu: Bardzo pouczające, dziękuję. – porgarmingduod