Red*_*ite 3 python python-datamodel python-3.x getattribute
当我调用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__())
Run Code Online (Sandbox Code Playgroud)
输出:
< main .A object at 0x000001FDF7AEA760>
< main .A object at 0x000001FDF7AEA760>
Hello
期望输出:
你好
你好
你好