gpt4 book ai didi

python - 为什么不能用另一个函数替换 Python 对象的 __str__ 方法?

转载 作者:太空宇宙 更新时间:2023-11-03 19:52:33 24 4
gpt4 key购买 nike

这是代码:

class Dummy(object):
def __init__(self, v):
self.ticker = v


def main():
def _assign_custom_str(x):
def _show_ticker(t):
return t.ticker
x.__str__ = _show_ticker
x.__repr__ = _show_ticker
return x


a = [Dummy(1), Dummy(2)]

a1 = [_assign_custom_str(t) for t in a]
print a1[1]
# print a1[1].__str__ # test to if orig __str__ is replaced

我希望看到这样的输出

2

但是,我看到的是标准表示:

<__main__.Dummy object at 0x01237730>

为什么?

最佳答案

魔法方法只有在 defined on the type rather than on the object 时才保证有效。 .

例如:

def _assign_custom_str(x):
def _show_ticker(self):
return self.ticker
x.__class__.__str__ = _show_ticker
x.__class__.__repr__ = _show_ticker
return x

但请注意,这将影响所有 Dummy 对象,而不仅仅是您用来访问该类的对象。

关于python - 为什么不能用另一个函数替换 Python 对象的 __str__ 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59740322/

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