Когда я вызываю str()
для объекта, у которого есть перегруженный метод __getattribute__
, он, кажется, не использует его, а вместо этого вызывает __str__
напрямую. Есть ли какая-то другая функциональность, которую я должен изменить, или способ заставить ее использовать __getattribute__
? Если я перегрузлю __str__
напрямую, он будет работать как положено, но это не идеально для моих нужд.
class A(object):
def __getattribute__(self, attr):
if attr == "__str__":
return lambda: "Hello"
return object.__getattribute__(self, attr)
x = A()
print(x)
print(str(x))
print(x.__str__())
Вывод: <<strong> main .A объект по адресу 0x000001FDF7AEA760> <<strong> main .A объект по адресу 0x000001FDF7AEA760> Привет
Ожидаемый результат: Привет Привет Привет