【发布时间】:2020-08-03 11:04:06
【问题描述】:
当我在具有重载__getattribute__ 方法的对象上调用str() 时,它似乎没有使用它,而是直接调用__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 对象位于 0x000001FDF7AEA760>
main.A 对象位于 0x000001FDF7AEA760>
你好
预期输出:
你好
你好
你好
【问题讨论】:
标签: python python-3.x getattribute python-datamodel