我试图确保help()在 Python 2.7 REPL 上运行会显示__doc__用functools.partial. 当前help()在functools.partial“函数”上运行显示__doc__类的functools.partial,而不是我的包装函数的__doc__。有没有办法做到这一点?
考虑以下可调用对象:
def foo(a):
"""My function"""
pass
partial_foo = functools.partial(foo, 2)
运行help(foo)将导致显示foo.__doc__。但是,运行会help(partial_foo)导致Partial object。__doc__
我的第一种方法是使用functools.update_wrapper正确替换部分对象__doc__的foo.__doc__. 但是,由于pydoc的方式,这并不能解决“问题” 。
我已经调查了 pydoc 代码,问题似乎是它partial_foo实际上是一个Partial 对象而不是典型的函数/可调用对象,有关该详细信息的更多信息,请参阅此问题。
默认情况下,如果通过inspect.isclass__doc__确定传递的对象是类,pydoc 将显示对象类型,而不是实例。有关代码本身的更多信息,请参见render_doc 函数。
所以,在我上面的场景中,pydoc 显示的是类型的帮助,而functools.partial不是__doc__我的functools.partial实例的帮助。
无论如何要更改我的调用help()或functools.partial传递给的实例,help()以便它显示__doc__实例的,而不是类型?