我试图使用Sphinx来记录我的Python类.我这样做是使用autodoc:
.. autoclass:: Bus
:members:
Run Code Online (Sandbox Code Playgroud)
虽然它正确地获取我的方法的文档字符串,那些装饰:
@checkStale
def open(self):
"""
Some docs.
"""
# Code
Run Code Online (Sandbox Code Playgroud)
与@checkStale存在
def checkStale(f):
@wraps(f)
def newf(self, *args, **kwargs):
if self._stale:
raise Exception
return f(self, *args, **kwargs)
return newf
Run Code Online (Sandbox Code Playgroud)
有一个不正确的原型,如open(*args, **kwargs).
我怎样才能解决这个问题?我的印象是使用@wraps会修复这种事情.
我一直在努力获取我的文档,以便我正在开发一个包含镜像客户端和服务器API的开源项目.为此,我创建了一个装饰器,大部分时间都可以用来记录一个简单地对其输入执行验证的方法.你可以找到一个完整的类这些方法在这里和装饰的实现在这里.
正如您所见,装饰器functools.wraps用于保存文档字符串,我也认为是签名,但源代码与生成的文档如下所示:
资源:
VS
文档: 
有谁知道有任何方法让setH生成的文档显示正确的呼叫签名?(没有为每个签名设置一个新的装饰器 - 我需要镜像的方法)
我找到了一个解决方法,其中涉及让装饰器不更改未绑定的方法,但让类在绑定时改变方法(对象实例化) - 这看起来像是一个黑客,所以任何评论,或其他方式的做法这,将不胜感激.