In Python integrierte Funktionen vs. magische Funktionen und Überschreiben [duplizieren]

Mögliche Duplikate:
Operator-Suche auf Metaklasse abfangen
Wie kann ich Aufrufe von Pythons "magischen" Methoden in neuen Stilklassen abfangen?

Betrachten Sie den folgenden Code:

class ClassA(object):
    def __getattribute__(self, item):
        print 'custom__getattribute__ - ' + item
        return ''
    def __str__(self):
        print 'custom__str__'
        return ''

a=ClassA()
print 'a.__str__: ',
a.__str__

print 'str(a): ',
str(a)

Die Ausgabe war für mich überraschend:

a.__str__:  custom__getattribute__ - __str__
str(a):  custom__str__
Nichtstr(a) soll auf die magische Methode abgebildet werdena.__str__()?Wenn ich den Brauch entferneClassA.__str__(), dannClassA.__getattribute__() nimmt den Anruf immer noch nicht entgegen. Woher?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage