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?