Python C扩展关键字参数

时间:2015-03-04 14:52:24

标签: python c python-c-extension

问题描述:

当我调用这样定义的方法时:

static PyMethodDef Parser_methods[] = {
    {"read", (PyCFunction)Parser_read, METH_KEYWORDS, "read from input source"},
    {NULL, NULL, 0, NULL} 
};

static PyObject *
Parser_read(Parser * const self, PyObject * unused0, PyObject * unused1)
{
...
}

我得到了:

SystemError: Bad call flags in PyCFunction_Call. METH_OLDARGS is no longer supported!

代码在Python2上工作正常,但在Python3上崩溃

2 个答案:

答案 0 :(得分:2)

可能是这个错误...

http://bugs.python.org/issue11587

这意味着它是一个python版本问题。一个修复似乎是使用METH_KEYWORDS | METH_VARARGS

答案 1 :(得分:0)

Parser_read应该是

static PyObject* Parser_read(PyObject *self, PyObject *args)