missing - python documentation generator
Enlace al método de clase en python docstring (3)
La solución que funciona para Sphinx es agregar un prefijo a la referencia con ~
. Entonces la respuesta es:
def class MyClass():
def foo(self):
print ''foo''
def bar(self):
"""This method does the same as :func:`~mymodule.MyClass.foo`"""
print ''foo''
Esto da como resultado un html que se ve así: This method does the same as foo()
y foo()
es un enlace.
Sin embargo, en Spyder todavía no funciona como un enlace.
Gracias a @devin_s para dirigirme a la sección correcta en la documentación de Sphinx: http://www.sphinx-doc.org/en/stable/markup/inline.html#cross-referencing-syntax
Deseo agregar un enlace a un método en mi clase desde el docstring de otro método de la misma clase. Quiero que el enlace funcione en sphinx y preferentemente también en Spyder y otros IDE de Python.
Intenté varias opciones y encontré solo una que funciona, pero es engorrosa.
Supongamos la siguiente estructura en mymodule.py
def class MyClass():
def foo(self):
print ''foo''
def bar(self):
"""This method does the same as <link to foo>"""
print ''foo''
Probé las siguientes opciones para <link to foo>
:
- : func: `foo`
- : func: `self.foo`
- : func: `MyClass.foo`
- : func: `mymodule.MyClass.foo`
El único que produce efectivamente un enlace es: func: `mymodule.MyClass.foo`, pero el enlace se muestra como mymodule.MyClass.foo()
y quiero un enlace que se muestra como foo()
o foo
.
Ninguna de las opciones anteriores produce un enlace en Spyder.
Gracias por tu ayuda.
Me parece que solo tiene que agregar __name__
o __doc__
a su expresión para obtener lo que desea.
Todavía no estoy seguro de haber entendido correctamente el objetivo
class MyClass():
def foo(self):
"""I am the docstring of foo"""
print ''foo''
def bar(self):
"""This method does the same as <link to foo>"""
print ''foo''
print
print MyClass.foo
print MyClass.foo.__name__
print MyClass.foo.__doc__
print
print MyClass.__dict__[''foo'']
print MyClass.__dict__[''foo''].__name__
print MyClass.__dict__[''foo''].__doc__
resultado
<unbound method MyClass.foo>
foo
I am the docstring of foo
<function foo at 0x011C27B0>
foo
I am the docstring of foo
Si desea especificar manualmente el texto del enlace, puede usar:
:func:`my text <mymodule.MyClass.foo>`
Para obtener más información, realice una consulta cruzada de objetos de Python .