![](/img/trans.png)
[英]Preserve default arguments of wrapped/decorated Python function in Sphinx documentation
[英]How to preserve a docstring of a decorated class for sphinx documentation?
我有一个装饰器,它有一个包装类的嵌套定义。 包装器将其包装的原始类维护为属性。 玩具示例如下所示:
def decorator(cls):
class Wrapper(object):
original = cls
def __init__(self):
self.__doc__ = self.original.__doc__
self.__name__ = self.original.__name__
def do_something_with_cls(cls):
pass
return Wrapper
现在我想在另一个模块中使用这个装饰器来装饰Foo
类,并在装饰之前为Foo
类生成sphinx文档。 它看起来像这样:
from .bar import decorator
@decorator
class Foo(object):
"""The docstring I want to preserve."""
def __init__(self):
pass
我试图通过使用autoclass
功能实现这一点,但它没有成功。 我想要做的是创建一个类实例并获取其文档字符串:
.. autoclass:: package.baz.Foo()
:members:
但它在package.baz.Foo
类的html文档中返回了这个: alias of package.bar.decorator.<locals>.Wrapper
我想要实现这一点,当我记录baz
模块时,我能够在装饰之前生成Foo类的文档。 可能吗?
编辑:
这看起来像一个类似的问题,但在这里我想要实现的是将Sphinx将看到的文档字符串传递给Wrapper
实例,并根据原始的Foo
文档字符串生成文档,或者我将能够调用Wrapper.original
并制作这方面的文档,但以下没有成功:
.. autoclass package.baz.Foo.original
:members:
如果@wraps
不起作用,您可以手动更新__doc__
。
做类似的事情:
def decorator(cls):
class Wrapper(object):
original = cls
def __init__(self):
self.__doc__ = self.original.__doc__
self.__name__ = self.original.__name__
def do_something_with_cls(cls):
pass
Wrapper.__doc__ = cls.__doc__
return Wrapper
@decorator
class Foo(object):
"""The docstring I want to preserve."""
def __init__(self):
pass
print(Foo.__doc__)
“我想保留的文档字符串。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.