У нас есть модуль, в котором каждый файл класса находится в файле, начинающемся с подчеркивания. В init.py мы импортируем эти файлы и предоставляем функции конструктора для каждого класса (это необходимо, поскольку каждому конструктору класса требуется дополнительное состояние, которое мы не хотим, чтобы пользователи модуля нуждались в нем). возиться).
Например. у нас может быть _foo.py с:
class Foo(object):
def __init(context, params):
...
и в init.py у нас есть:
from ._foo import Foo as _Foo
def foo(params):
return _Foo(_getContext(), params)
Я пытаюсь создать для этого документацию с помощью Sphinx autodoc. Я, очевидно, хочу, чтобы была создана документация для Foo и его методов (хотя желательно не для его конструктора), а также для оболочки конструктора foo().
Я могу заставить Sphinx генерировать документы для foo(), но не могу заставить его генерировать что-либо для Foo. Я пробовал:
.. automodule:: foo_module
:members:
так же как:
.. autoclass:: foo_module.Foo
:members:
но безрезультатно. Первый просто включает foo(); последний дает мне ошибку:
index.rst:17: WARNING: autodoc: failed to import class u'Foo' from module u'foo_module'; the following exception was raised:
Traceback (most recent call last):
File "/python2.7/site-packages/sphinx/ext/autodoc.py", line 342, in import_object
obj = self.get_attr(obj, part)
File "/python2.7/site-packages/sphinx/ext/autodoc.py", line 241, in get_attr
return safe_getattr(obj, name, *defargs)
File "/python2.7/site-packages/sphinx/util/inspect.py", line 114, in safe_getattr
raise AttributeError(name)
AttributeError: Foo
Есть ли способ обойти это?
__all__
, чтобы включить_Foo
- person kindall   schedule 07.04.2015__init__
непосредственно в класс; вместо этого назовите его как-то вроде_init
(при условии, что вы не документируете частные члены) и включите__init__ = _init
в класс. :-) - person kindall   schedule 07.04.2015