在 CPython 中获取可调用参数计数?

问题描述

我有 Python C-Extension 函数,它采用可调用作为参数来充当回调。 我有两种类型的回调,每一种都有不同数量的参数。 我想根据其参数的数量检测回调类型。

是否有直接的方法,因为我已经有了 PyObject*,而不是调用 inspect 模块?

static PyObject *RegisterCallback(PyObject *self,PyObject *args,PyObject *kwdict)
{
    PyObject* callback;

    static char *kwlist[] = { "callback",NULL};
    
    if (!PyArg_ParseTupleAndKeywords(args,kwdict,"O",kwlist,&callback))
        return NULL;

    if(!PyCallable_Check(callback))
    {
        PyErr_SetString(PyExc_ValueError,"The callback should be callable function or callable object.");
        return NULL;
    }

    int args_count = ????
    bool registration_result = register_the_callback(callback);
    if (registration_result )
    {
        Py_RETURN_TRUE;
    }
    else
        Py_RETURN_FALSE;

}

注意: 目标 Python:2.7、3.x。

注意:我已经知道 python 2.x 已经死了,我们应客户的要求保留它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)