funções embutidas em python vs funções mágicas e substituindo [duplicado]
Duplicata Possível:
Interceptar a consulta do operador na metaclasse
Como posso interceptar chamadas para os métodos "mágicos" do Python em novas classes de estilo?
Considere o seguinte 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)
A saída foi surpreendente para mim:
a.__str__: custom__getattribute__ - __str__
str(a): custom__str__
Não éstr(a)
deveria ser mapeado para o método mágicoa.__str__()
?Se eu remover o costumeClassA.__str__()
, entãoClassA.__getattribute__()
ainda não pega a ligação. Por quê?