2012-08-11 12 views
9

Quizás una pregunta estúpida: ¿cómo se puede especificar docstring para funciones especiales como __init__ al escribir una extensión C? Para métodos ordinarios, la tabla de métodos tiene una provisión para docstrings. La siguiente documentación autogenerada aparece cuando intento de ayuda (miclase):Cómo especificar docstring para __init__ en la extensión Python C

__init__(...) 
     x.__init__(...) initializes x; see help(type(x)) for signature 

Pero esto es lo que desea anular.

Respuesta

1

Creo que lo más común es simplemente pegar las definiciones para las diversas funciones en tp_doc y simplemente dejarlo así. Luego puede hacer lo que dice y mirar el documento de su objeto. Esto es lo que ocurre en toda la biblioteca estándar.

Usted realmente no tiene ninguna opción de escribir __doc__ en las diversas ranuras (tp_init, etc.) porque están envueltos por una wrapper_descriptor cuando se llama a PyType_Ready, y la cadena de documentación en un wrapper_descriptor es de sólo lectura.

Creo que es posible omitir el uso de las ranuras y agregar su método (por ejemplo, __init__) a su MemberDefs, pero nunca lo he intentado.

+1

Parece que es el caso. Ya había intentado poner \ _ \ _ init \ _ \ _ en una matriz PyMethoDef. Si bien no hace ningún daño colocarlo allí, el intérprete ignora la cadena de documentación que proporcioné. – subhacom

Cuestiones relacionadas