Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用autodoc覆盖Sphinx中的构造函数参数?_Python_Python Sphinx_Autodoc - Fatal编程技术网

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:成员:
技术。