Tôi đang viết phần mở rộng C, và tôi muốn làm cho chữ ký của các phương pháp của tôi có thể nhìn thấy được để xem xét.Mở rộng Python C: chữ ký phương thức cho tài liệu?
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");
}
Bây giờ nếu (sau khi xây dựng nó ...) Tôi nạp module và nhìn vào sự giúp đỡ của nó:
>>> import _myexample
>>> help(_myexample)
tôi sẽ nhận được:
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.
Tôi muốn trở thành cụ thể hơn và có thể thay thế foo (...) bởi foo (hết giờ, cờ = Không)
Tôi có thể làm điều này không? Làm sao?
Điều này làm việc với 'inspect.signature'? – Eric
@Eric Có, miễn là nó tuân thủ các quy tắc của '__text_signature__' tôi đã đề cập ở trên. – MSeifert
Âm thanh như một thứ mà 'numpy' cần bản vá cho – Eric