Как узнать, какую функцию вызывает интерпретатор Python из вызываемого PyObject? - PullRequest
0 голосов
/ 07 июня 2011

Я пытаюсь проследить через исходный код Python, где на самом деле вызывается определенная функция и как получить ее имя.

In 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, но я хочу знать имя вызываемой функции. (аргументы тоже подойдут)

Примечание: я работаю с Python 2.6.

1 Ответ

1 голос
/ 07 июня 2011

Атрибут __name__ объекта функции должен содержать имя.Аргументы указаны в arg как кортеж и kw в качестве диктанта.

...