Как я могу показать унаследованные члены класса в моей документации по Sphinx?

Я хочу задокументировать некоторые классы, которые являются производными от одного и того же базового класса с некоторыми общими атрибутами, и я хотел бы повторить документацию для каждого атрибута в подклассах, чтобы я мог видеть все атрибуты для класса в одном месте.

Так, например, у меня есть этот код:

class Base(object):

    """Base class."""

    #: First attribute
    a = int
    #: Second attribute
    b = str

class FirstChild(Base):

    """First Child of Base."""

    #: Child attribute
    c = float

class SecondChild(Base):

    """Second Child of Base."""

    pass

и у меня это сначала:

.. automodule:: example
   :members:
   :show-inheritance:

Результат будет таким:

class class example.Base

   Bases: "object"

   Base class.

   a
      First attribute
      alias of "int"

   b
      Second attribute
      alias of "str"

class class example.FirstChild

   Bases: "example.Base"

   First Child of Base.

   c
      Child attribute
      alias of "float"

class class example.SecondChild

   Bases: "example.Base"

   Second Child of Base.

Есть ли способ создать документацию, чтобы дочерние классы также имели унаследованные атрибуты?

Например:

class class example.FirstChild

   Bases: "example.Base"

   First Child of Base.

   a
      First attribute
      alias of "int"

   b
      Second attribute
      alias of "str"

   c
      Child attribute
      alias of "float"

class class example.SecondChild

   Bases: "example.Base"

   Second Child of Base.

   a
      First attribute
      alias of "int"

   b
      Second attribute
      alias of "str"

person Kjir    schedule 20.05.2015    source источник
comment


Ответы (1)


Вам нужно добавить опцию :inherited-members:, цитата из документов:

Для классов и исключений члены, унаследованные от базовых классов, будут исключены при документировании всех членов, если вы не укажете параметр флага унаследованных членов в дополнение к членам.

person Max Tepkeev    schedule 21.05.2015
comment
Здесь отлично работает. Трудно сказать, почему это не работает для вас, пытались ли вы обновить Sphinx или использовать тему по умолчанию и посмотреть, работает ли она с ней. - person Max Tepkeev; 21.05.2015
comment
Это странно: в моем тесте, опубликованном выше, он работает, но в моем реальном проекте - нет. Я действительно не могу объяснить, почему, поскольку нет существенных различий ни в conf.py, ни в других файлах. Единственная разница, о которой я могу думать, это то, что в моем проекте класс вложен: .. autoclass:: www.oe.oe_wsme.wstypes.BaseModel - person Kjir; 22.05.2015
comment
Вероятно, у ваших унаследованных членов не определена строка документации, в этом случае попробуйте также добавить `: undoc-members:`. - person Sergey Lyapustin; 02.05.2017