Funciones incorporadas de Python frente a funciones mágicas y reemplazo [duplicado]
Posible duplicado:
Interceptar la búsqueda del operador en metaclase
¿Cómo puedo interceptar llamadas a los métodos "mágicos" de python en las nuevas clases de estilo?
Considere el siguiente código:
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)
La salida me sorprendió:
a.__str__: custom__getattribute__ - __str__
str(a): custom__str__
No esstr(a)
Se supone que debe ser asignado al método mágicoa.__str__()
?Si quito la costumbreClassA.__str__()
, entoncesClassA.__getattribute__()
Todavía no capta la llamada. ¿Cómo?