2016-08-07 4 views
1

純粋なPythonで関数を定義するときは、helpを呼び出すときにその署名が表示されます。たとえば:C/APIでのPython関数の署名の指定

static PyObject* 
mod_hello(PyObject* self, PyObject* args) 
{ 
    const char* name; 
    if (!PyArg_ParseTuple(args, "s", &name)) 
     return NULL; 
    printf("Hello %s\n", name); 
    Py_RETURN_NONE; 
} 

static PyMethodDef HelloMethods[] = 
{ 
    {"hello", mod_hello, METH_VARARGS, "Greet somebody."}, 
    {NULL, NULL, 0, NULL} 
}; 

この利回り:

>>> help(hello) 
Help on built-in function hello in module hello: 

hello(...) 
    Greet somebody. 

任意のアイデアをどのように、内

>>> def hello(name): 
... """Greet somebody.""" 
... print "Hello " + name 
... 
>>> help(hello) 
Help on function hello in module __main__: 

hello(name) 
    Greet somebody. 

>>> 

C/APIにPythonの関数を定義し、しかし、その署名は、基本的な情報が欠けていますC/APIを使用して、hello(...)からhello(name)に署名を変更しますか?

+3

私はあなたがhttp://stackoverflow.com/questions/1104823/python-c-extension-method-signatures-for-documentationを読んでいると思いますか? – boardrider

答えて

1

あなたはinspectは(少なくともそれは3.4+ Pythonのために働く)にそれらを抽出することができますような方法で機能ドキュメンテーション文字列にそれを付加することで署名を含めることができます。私はより完全な投稿した

static PyMethodDef HelloMethods[] = 
{ 
    {"hello", mod_hello, METH_VARARGS, "hello(name, /)\n--\n\nGreet somebody."}, 
    {NULL, NULL, 0, NULL} 
}; 

注意より詳細なルールとメカニズムを説明するhereと答えてください。

関連する問題