встроенные функции Python против магических функций и переопределения [дубликат]
Возможный дубликат:
Поиск оператора перехвата на метаклассе
Как я могу перехватывать вызовы «магических» методов python в новых классах стиля?
Рассмотрим следующий код:
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.__str__: custom__getattribute__ - __str__
str(a): custom__str__
неstr(a)
должен быть сопоставлен с магическим методомa.__str__()
?Если я уберу кастомClassA.__str__()
, тогдаClassA.__getattribute__()
до сих пор не отвечает на звонок. Как придешь?