gpt4 book ai didi

python - 在新型类中替换 __str__

转载 作者:太空狗 更新时间:2023-10-30 02:32:53 26 4
gpt4 key购买 nike

<分区>

我正在转换旧的 Python 代码并将一些类替换为新样式类。问题是这破坏了替换 __str__ 的行为,我不知道为什么。

class OldStyle():
def __str__(self):
return 'original'

old = OldStyle()
print old
old.__str__ = lambda: 'modified'
print old


class NewStyle(object):
def __str__(self):
return 'original'

new = NewStyle()
print new
new.__str__ = lambda: 'modified'
print new

我以为

original
modified
original
modified

但是我得到了

original
modified
original
original

也就是说,__str__ 在新样式中没有被正确替换。打印 new.__str__ 正确返回新的 lambda,但 str(new) 仍然没有调用它。我认为这是某种方法查找缓存问题,但即使以前从未打印过该对象,也会发生这种情况。

为什么会这样?我从未听说过这种行为差异,它只发生在 __str__ 中,其他方法都可以替换。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com