我正在使用一个第三方库,其中一个类的repr效果不佳,我希望在该类的实例创建后覆盖它。
我已经了解到如何在现有对象中创建绑定方法。
class toy():
pass
inst= toy()
class inhtoy():
def __new__(cls,obj):
def __repr__(self):
return 'Sucessful'
import types
obj.__repr__ = types.MethodType(__repr__,obj)
return obj
t = inhtoy(inst)
实际上,如果我调用t.repr(),它会起作用,但它不会覆盖原来的repr。它显示为<bound method inhtoy.__new__.<locals>.__repr__ of <__main__.toy object at 0x7f76e0b61f98>>
这是一种本地方法。
调用 repr(t)
仍然指向原始表示形式 '<__main__.toy object at 0x7f76e0b61f98>'
而不是被覆盖的那个。
有没有正确的方法可以做到这一点?
谢谢
__repr__
看起来很糟糕,但用自己的替代品替换它将会更加令人困惑。 - user2357112__repr__
呢? - Nullman