当我调用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__())
输出:
< main .A object at 0x000001FDF7AEA760>
< main .A object at 0x000001FDF7AEA760>
你好
预期输出:
你好
你好
你好