1

C-API を介してモジュールにメソッドを動的に追加するにはどうすればよいですか? 登録する必要がある多くの関数があり、それらは同じ配列にありません。ドキュメントには可能であると書かれているので、モジュールを NULL メソッド テーブルで初期化できると思います。

PyObject *mymod = Py_InitModule("my", NULL);

メソッドを 1 つずつ追加する関数の名前は何ですか。

4

1 に答える 1

2

基本的に、最初にモジュール dict を取得する必要があります。

d = PyModule_GetDict(m);

モジュール名を PyString オブジェクトに保存します。

n = PyString_FromString("modname");

次に、PyMethodDef構造体を適切に設定mlし、新しい callable を作成します。

v = PyCFunction_NewEx(&ml, (PyObject*)NULL, n);

関数名をキーにしたこの callable をモジュール dict に追加します。

PyDict_SetItemString(d, ml->ml_name, v);

関連するすべてのエラーチェックを明らかにスキップしました。

これはすべて、何をするかについての私の解釈ですPy_InitModule4(はデフォルト引数でPy_InitModule呼び出すマクロです)。Py_InitModule4

于 2011-07-03T21:10:03.517 に答える