python3 missing method how example ejemplo code python python-sphinx spyder

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 .