我有以下Python代码:
>>> class My:
def __repr__(self):
return "My object"
def __str__(self):
return "My object"
>>> my = My()
>>> my.__repr__ = lambda: "I just changed repr"
>>> my.__repr__
<function <lambda> at 0x00000000033A91E0>
>>> repr(my)
'My object'
我无法理解为什么repr(my)
不会返回__repr__
的新值。我检查了其他功能,所有功能都以同样的方式工作。似乎Python首先检查类,而不是检查实例是否具有所需的方法。
是否可以在实例级别覆盖__repr__
,而无需创建新类?