Я хотел бы задокументировать мой класс, наследующий от базового, оба из которых находятся внутри подмодуля более крупного пакета. Этот пакет импортирует классы на самый верхний уровень для лучшего взаимодействия с пользователем. По этой причине я также сделал свою документацию на этом уровне. Вот суть моей ситуации.
# Directory structure
package
__init__.py
sub.py
# sub.py
class Foo:
pass
class Bar(Foo):
pass
# __init__.py
from .sub import Foo, Bar
# Some documentation file
.. currentmodule:: package
.. autoclass:: Foo
.. autoclass:: Bar
:show-inheritance:
Другие ссылки на эти классы работают нормально, хорошо работают со ссылками package.Foo
вместо package.sub.Foo
. Но опция show-inheritance
для autoclass
отображает исходный путь вместе с неработающей ссылкой. При перемещении классов в __init__.py
ссылка восстанавливается.
Как создать работающую ссылку? В качестве бонуса я хотел бы иметь более короткое имя, которое уже есть в имени класса.
This - это связанный вопрос, решение которого я пробовал. Изменение атрибута __module__
этих классов работает.
# __init__.py
Foo.__module__ = 'package'
Bar.__module__ = 'package'
Однако я сомневаюсь, что оптимальным решением будет сделать это вручную для каждого определенного мной класса , большинство из которых имеют происходит какое-то наследство.