wbudowane funkcje python a funkcje magiczne i nadpisywanie [duplikat]
Możliwy duplikat:
Wyszukiwanie operatora przechwytującego metaklasy
Jak mogę przechwytywać wywołania metod „magicznych” Pythona w nowych klasach stylów?
Rozważ następujący kod:
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)
Wynik był dla mnie zaskakujący:
a.__str__: custom__getattribute__ - __str__
str(a): custom__str__
Nie jeststr(a)
ma być przyporządkowany do magicznej metodya.__str__()
?Jeśli usunę ten zwyczajClassA.__str__()
, następnieClassA.__getattribute__()
nadal nie łapie połączenia. Dlaczego?