如何找出Python解释器从可调用的PyObject调用的函数?

时间:2011-06-07 17:25:26

标签: python python-2.6 cpython

我正在尝试追踪Python源代码,其中实际调用了某个函数以及如何获取其名称。

在abstract.c:

PyObject *
PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw)
{
    ternaryfunc call;
    if((call = func->ob_type->tp_name) != NULL){ 
        PyObject *result;
        ...
        result = (*call)(func, arg, kw); //How do I find out what is being called here?
        ...
    }
    ...
}

在我评论的那一行,我怎样才能得到所谓的名字?我能够通过(char *)func->ob_type->tp_name获取对象类型,但我想知道被调用函数的名称。 (args也会很好)

注意:我正在使用Python 2.6。

1 个答案:

答案 0 :(得分:1)

函数对象的__name__属性应包含名称。参数在arg中作为元组,kw作为dict。