0

特定の関数が実際に呼び出される 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が、呼び出されている関数の名前を知りたいです。(引数もいいでしょう)

注: Python 2.6 を使用しています。

4

1 に答える 1

1

関数オブジェクトの__name__属性には名前が含まれている必要があります。引数はarg、タプルおよびkw辞書として入っています。

于 2011-06-07T17:30:32.343 に答える