Piszę rozszerzenia C i chciałbym, aby podpis moich metod był widoczny dla introspekcji.Rozszerzenie Python C: sygnatury metod dla dokumentacji?
static PyObject* foo(PyObject *self, PyObject *args) {
/* blabla [...] */
}
PyDoc_STRVAR(
foo_doc,
"Great example function\n"
"Arguments: (timeout, flags=None)\n"
"Doc blahblah doc doc doc.");
static PyMethodDef methods[] = {
{"foo", foo, METH_VARARGS, foo_doc},
{NULL},
};
PyMODINIT_FUNC init_myexample(void) {
(void) Py_InitModule3("_myexample", methods, "a simple example module");
}
Now if (po wybudowaniu go ...) I załadować moduł i spojrzeć na jego pomoc:
>>> import _myexample
>>> help(_myexample)
dostanę:
Help on module _myexample:
NAME
_myexample - a simple example module
FILE
/path/to/module/_myexample.so
FUNCTIONS
foo(...)
Great example function
Arguments: (timeout, flags=None)
Doc blahblah doc doc doc.
chciałbym być jeszcze bardziej konkretny i być w stanie zastąpić foo (...) przez foo (limit czasu, flagi = Brak)
Czy mogę to zrobić? W jaki sposób?
to działa z 'inspect.signature'? – Eric
@Eric Tak, o ile jest zgodny z regułami '__text_signature__', o których wcześniej wspomniałem. – MSeifert
Brzmi jak rzecz, która 'numpy' potrzebuje łatki dla – Eric