我试图确保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__
实例的,而不是类型?