METH_VARARGS
这是典型的调用约定,其中方法的类型为PyCFunction。函数需要两个
PyObject*
PyArg_ParseTuple()
或
PyArg_UnpackTuple()
签名的功能
Py_fn_checkMy
与此不匹配。这需要两个论点。第一个是模块,这是您要检查的内容
MyType
. 第二个参数(您实际上不接受)是一个包含您传递的对象的元组。您应该从元组中提取参数并检查其类型。
METH_O
要指定单个参数而不是从元组中提取参数,请执行以下操作:
static PyObject *Py_fn_checkMy(PyObject *self, PyObject *obj) {
if (PyObject_IsInstance(obj, (PyObject *)&MyType)) Py_RETURN_TRUE;
else Py_RETURN_FALSE;
}
static PyMethodDef modmethodsdef[] = {
{ "checkMy", (PyCFunction)Py_fn_checkMy, METH_O, NULL },
{ NULL }
};