У меня есть куча классов, которые используют "специальные методы":
class Foo(object):
"Foo docstring"
attr1 = "Attribute!" #: first attribute
attr2 = "Another Attribute!" #: second attribute
def __init__(self):
self.x = 12
def say_hello(self):
"""
say_hello(self) -> None
Issue a friendly greeting.
"""
print "Hello! x is {0}".format(self.x)
def __contains__(self,other):
"""Implement ``other in self``"""
return other == self.x
теперь я хотел бы создать html-документацию для этого, используя Sphinx и autodoc. Как сказать Sphinx задокументировать __contains__
? я пытался добавить
autodoc_default_flags = ['members', 'undoc-members', 'special-members']
на conf.py
, но это также включало __dict__
, чего я определенно не хочу.
В настоящее время соответствующие части файла myproject.rst
выглядят так:
.. automodule:: myproject.foomodule
:members:
:undoc-members:
:show-inheritance:
редактировать добавление
.. automodule:: myproject.foomodule
:members:
:undoc-members:
:show-inheritance:
.. automethod:: myproject.foomodule.Foo.__contains__
добавляет документацию по этому методу, но в отдельном разделе -- не как часть документации класса Foo
.
Foo
- это что-то вроде азбуки бедняка. Его строки документации сообщают пользователю, каково ожидаемое поведение его подклассов, и вызываетNotImplementedErrors
. Я хочу задокументировать__contains__
, чтобы пользователь знал, что должен означатьif x in foo_subclass_instance
, но с тем же успехом это мог быть специальный метод__getitem__
, который ведет себя не совсем стандартным образом. - person mgilson   schedule 09.04.2013