我有一个decorator,它有包装类的嵌套定义。 包装器将其包装的原始类作为属性进行维护。 玩具示例如下所示:
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
现在我想在另一个模块中用这个decorator装饰Foo
类,并在装饰前为Foo
类生成sphinx文档。看起来是这样的:
from .bar import decorator
@decorator
class Foo(object):
"""The docstring I want to preserve."""
def __init__(self):
pass
我试图通过使用autoclass
功能来实现这一点,但没有成功。我想做的是创建一个类实例并获取其docstring:
.. autoclass:: package.baz.Foo()
:members:
但是它在package.baz.Foo
类的html文档中返回了这个:alias of package.bar.decorator.<locals>.Wrapper
我希望在编写baz
模块文档时,能够在Foo类的装饰之前生成它的文档。有可能吗?你知道吗
编辑:
This看起来是一个类似的问题,但这里我想实现的是将Sphinx将看到的docstring传递给Wrapper
实例,并基于原始的Foo
docstring生成一个文档,或者我将能够调用Wrapper.original
并对此进行文档编制,但以下操作没有成功:
.. autoclass package.baz.Foo.original
:members:
如果
@wraps
不起作用,您可以手动更新__doc__
。你知道吗执行以下操作:
相关问题 更多 >
编程相关推荐