![](/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.