如何在Python中覆盖单个函数的字符串表示形式?
我尝试过的方法:
>>> def f(): pass
...
>>> f
<function f at 0x7f7459227758>
>>> f.__str__ = lambda self: 'qwerty'
>>> f
<function f at 0x7f7459227758>
>>> f.__repr__ = lambda self: 'asdfgh'
>>> f
<function f at 0x7f7459227758>
>>> f.__str__(f)
'qwerty'
>>> f.__repr__(f)
'asdfgh'
我知道我可以通过创建一个带有 __call__
(使其看起来像函数) 和 __str__
(自定义字符串表示) 的类来获得预期的行为。不过,我很好奇是否可以通过常规函数实现类似的功能。