是的,如果您愿意放弃该功能实际上是一个功能。
首先,为我们的新类型定义一个类:
import functoolsclass reprwrapper(object): def __init__(self, repr, func): self._repr = repr self._func = func functools.update_wrapper(self, func) def __call__(self, *args, **kw): return self._func(*args, **kw) def __repr__(self): return self._repr(self._func)
添加装饰器功能:
def withrepr(reprfun): def _wrap(func): return reprwrapper(reprfun, func) return _wrap
现在我们可以定义repr和函数了:
@withrepr(lambda x: "<Func: %s>" % x.__name__)def mul42(y): return y*42
现在
repr(mul42)生产
'<Func: mul42>'



