J'ai un décorateur qui a une définition imbriquée de la classe enveloppante. Le wrapper maintient comme attribut la classe originale qu'il enveloppe. Un exemple de jouet ressemble à ceci :
def decorator(cls):
class Wrapper(object):
original = cls
def __init__(self):
self.__doc__ = self.original.__doc__
self.__name__ = self.original.__name__
def do_something_with_cls(cls):
pass
return Wrapper
Maintenant, je veux décorer le Foo
avec ce décorateur dans l'autre module et générer la documentation sphinx pour la classe Foo
avant qu'elle ne soit décorée. Cela ressemble à ceci :
from .bar import decorator
@decorator
class Foo(object):
"""The docstring I want to preserve."""
def __init__(self):
pass
J'ai essayé d'atteindre cet objectif en utilisant la fonction autoclass
la fonctionnalité mais ça n'a pas marché. Ce que je voulais faire était de créer une instance de classe et de prendre sa docstring :
.. autoclass:: package.baz.Foo()
:members:
mais il a renvoyé ceci dans la documentation html de l'application package.baz.Foo
classe : alias of package.bar.decorator.<locals>.Wrapper
C'est ce que je veux faire lorsque je documente le baz
je suis capable de générer une documentation de la classe Foo avant sa décoration. Est-ce possible ?
EDITAR:
Ce site ressemble à un problème similaire, mais ici, ce que j'aimerais réaliser, c'est passer à la fonction Wrapper
l'instance de la docstring que Sphinx verra et générera une documentation basée sur l'original. Foo
ou je serai en mesure d'appeler une Wrapper.original
et en faire une documentation, mais ce qui suit n'a pas fonctionné :
.. autoclass package.baz.Foo.original
:members: