Python 如何使用autodoc覆盖Sphinx中的构造函数参数?
假设我有一门课是这样的:Python 如何使用autodoc覆盖Sphinx中的构造函数参数?,python,python-sphinx,autodoc,Python,Python Sphinx,Autodoc,假设我有一门课是这样的: class MyClass(object): """ Summary docs for my class. Extended documentation for my class. """ def __init__(self, *args): self.values = np.asarray(args) .. automodule:: mymodule :members: :exclude-membe
class MyClass(object):
""" Summary docs for my class.
Extended documentation for my class.
"""
def __init__(self, *args):
self.values = np.asarray(args)
.. automodule:: mymodule
:members:
:exclude-members: MyClass
.. autoclass:: MyClass(first, second, third)
如果我使用Sphinx和autodoc
扩展来记录此类,如下所示:
.. automodule:: mymodule
:members:
…构造函数签名显示为MyClass(*args)。我宁愿重写它并将其记录为MyClass(第一、第二、第三)
如果这是一个函数,我可以重写docstring第一行中的签名。但是这个技巧在类docstring上似乎不起作用。那么我如何重写构造函数签名呢?我认为最好的选择是这样做:
class MyClass(object):
""" Summary docs for my class.
Extended documentation for my class.
"""
def __init__(self, *args):
self.values = np.asarray(args)
.. automodule:: mymodule
:members:
:exclude-members: MyClass
.. autoclass:: MyClass(first, second, third)
MyClass
将覆盖参数,mymodule
的其他成员将被自动记录。
您需要使用:exclude members:
排除MyClass
,因为它将被包括两次。
我认为这是目前最简单的解决方案。对用户隐藏真正的调用签名对我来说是个坏主意。@LevLevitsky-构造函数总是使用一定数量的参数调用。无论是
*args
还是arg1、arg2,…
都是一个实现细节,可能随时更改。没有“真正的”调用签名-用户应该传递记录为可接受参数的内容。行为上存在差异(例如,针对过多的参数)。@LevLevitsky-如果有人以未定义的方式使用API(例如,传递过多的参数),我真的不在乎。我当然不认为有间接和混乱的文档是值得的。我使用的是。。automodule::mymodule\n:成员:
技术。