4

C API を使用して Python 用のモジュールを開発しています。Python からグローバルと見なされる変数を作成するにはどうすればよいですか?

たとえば、モジュールが の場合、次のジョブをmodule実行する変数を作成します。g

import module
print module.g

特に、gは整数です。

Alex Martelli のソリューション

PyObject *m = Py_InitModule("mymodule", mymoduleMethods);
PyObject *v = PyLong_FromLong((long) 23);

PyObject_SetAttrString(m, "g", v);
Py_DECREF(v);
4

1 に答える 1

4

モジュールの初期化ルーチンでPyObject_SetAttrStringを使用できます。最初の引数oはモジュール (のキャスト(PyObject*))、2 番目の引数attr_nameは "g"、3 番目の引数vは変数です。

PyObject *v = PyLong_FromLong((long) 23);

(もちろん、その他の値23は単なる例です!-)。

後で逆参照することを忘れないでくださいv

他の方法もありますが、これは単純で一般的な方法です。

于 2010-06-08T21:10:52.090 に答える