Mam kilka klas, które używają „specjalne metody”:Dołącz konkretne specjalne metody w sfinks
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
teraz chciałbym do generowania dokumentacji HTML dla tego używając Sfinksa i AutoDoc. Jak mogę powiedzieć Sphinxowi, aby udokumentował __contains__
? Próbowałem dodanie
autodoc_default_flags = ['members', 'undoc-members', 'special-members']
do conf.py
, ale również __dict__
który zdecydowanie nie chce.
Obecnie odpowiednie porcje wygląd myproject.rst
plików takich jak:
.. automodule:: myproject.foomodule
:members:
:undoc-members:
:show-inheritance:
edycji dodając
.. automodule:: myproject.foomodule
:members:
:undoc-members:
:show-inheritance:
.. automethod:: myproject.foomodule.Foo.__contains__
robi dodać dokumentację tej metody, ale w osobnym rozdziale - nie tak część dokumentacji klasy Foo
.
OTTOMH - Wierzę, że muszą być wyraźne i używać '.. automethod :: __contains__' jak nie wierzę' specjalnego members' akceptuje żadnej formy filtrowania parametr –
Przykład w pytaniu nie przedstawia dokładnie argumentu za udokumentowaniem tej metody. Nie ma sensu dokumentowanie '__contains__', jeśli po prostu powie ci, czy obiekt jest członkiem kolekcji. To [już udokumentowane w Pythonie] (http://docs.python.org/3/reference/datamodel.html#object.__contains__). Możesz podać w docstringu dla klasy, że obsługiwany jest operator 'in'. –
@JonClements - Wydaje się być blisko. Dodałem '.. automethod :: myproject.foomodule.Foo .__ includes__'' po powyższym przykładzie' ..automethod' i dodano dokumentację, ale jest ona dokumentowana oddzielnie od klasy. – mgilson