3

埋め込まれた Python コードで、既存のオブジェクトのオブジェクト参照を取得する方法はありますか?

つまり、'obj' というオブジェクトが (スクリプトによって作成されて) 既に存在し、それを PyObject* 参照に「変換」する必要がある場合、次のような関数はありますか? PyObject *getObjectReference(char *name) ?

編集:例として、コードの一部にいくつかのモジュールをインポートするとします。

PyRun_SimpleString("var = 1");

(または、同じ変数を定義する外部スクリプトである可能性もあります)

さて、コードの別のポイントで、その変数を取得したいと思います。私は次のようなものを探しています

PyObject *varPy = PyObject_GetGlobalObject("var");

c で python のグローバル変数を読み取る」は、それを作成したモジュールへの参照がなければ、グローバルに定義された変数を取得することはできないと暗黙のうちに言って、私の質問に部分的に答えます。これは正しいです?

4

1 に答える 1

1

C で Python のグローバル変数を読み取り、いくつかのテストを行って、DavidW から収集した情報を収集します (助けてくれてありがとう) 。

すでにロードされているモジュールへの参照を取得するには、次を使用します。

PyImport_AddModule("module_name");

グローバルに定義された変数への参照を取得するには、メイン モジュールをインポートし、名前で参照を取得します。

PyObject *mainModule = PyImport_AddModule("__main__");
PyObject *var = PyObject_GetAttrString(mainModule, "var_name");

変数が別のモジュール/スクリプト内で定義されている場合、変数はそのモジュールでのみ表示されます (グローバルではありません)。そのため、「 main」をその特定のモジュールの名前に変更する必要があります。

于 2016-10-25T12:59:22.833 に答える