【发布时间】:2016-11-09 13:44:30
【问题描述】:
编辑: 截至目前(Sphinx 1.4.9)似乎没有办法告诉 Sphinx 做我想做的事(参见 GitHub 上的issue)。来自 Brecht Machiels 的 accepted answer 以另一种方式解决了这个问题,直到 Sphinx 有一天能够这样做。
说明:
我正在尝试用 sphinx-apidoc 记录一个 Python 项目。 Sphinx 配置几乎是默认配置,我只包含了'sphinx.ext.autodoc'。
它通常可以工作,但派生类不会像我期望的那样继承其超类的方法文档。
示例:
考虑一个名为project 的非常简约的Python 包。除了一个空的__init__.py,它只包含一个文件(base.py,见下文)
# -*- coding: utf-8 -*
import abc
class Superclass(object):
"""The one to rule them all"""
@abc.abstractmethod
def give(self, ring):
"""Give out a ring"""
pass
class Derived(Superclass):
"""Somebody has to do the work"""
def give(self, ring):
print("I pass the ring {} to you".format(ring))
运行 sphinx-apidoc (sphinx-apidoc -o apidoc project -f) 会生成以下文件:
-
apidoc/modules.rstproject ======= .. toctree:: :maxdepth: 4 project -
apidoc/project.rstproject package =============== Submodules ---------- project.base module ------------------- .. automodule:: project.base :members: :undoc-members: :show-inheritance: Module contents --------------- .. automodule:: project :members: :undoc-members: :show-inheritance:
在默认的index.rst 中包含apidoc/modules.rst,后跟make html 会为这两个类及其方法生成一个基本的html 文档。不幸的是,Derived.give 的文档字符串是空的。
问题: 有没有办法告诉 Sphinx 在没有装饰器魔法的情况下采用父方法文档,如this SO 帖子中所述,每个方法都有?
【问题讨论】:
标签: python inheritance python-sphinx docstring