0

関数fooを含むいくつかの埋め込まれたPythonコードがあると仮定すると、その関数への参照を取得するための最良の方法は何ですか(PyObject_CallObjectで使用するため)?

1つの方法は、手動またはリフレクションを使用して、関数名とともに各関数を関数に登録させることです。これはやり過ぎのようです。

もう1つの方法は、関数名を受け取り、関数への参照を返す「ローダー」関数を作成することです。より良いですが、ローダー関数をCに登録する必要があります。

追加のPythonコードを作成する必要がある場合としない場合で、これを行うためのより良い方法がありませんか?

4

1 に答える 1

1

Pythonの埋め込みに関するドキュメントのセクションをお読みください。関数を含むモジュールへの参照があると思います。最後に、オブジェクトから関数参照を取得する方法を示す例があります。

pFunc = PyObject_GetAttrString(pModule, argv[2]);
/* pFunc is a new reference */

if (pFunc && PyCallable_Check(pFunc)) {
    ...
}
Py_XDECREF(pFunc);
于 2010-01-14T21:07:24.967 に答える