2016-10-24 3 views
0

既存のオブジェクトのオブジェクト参照を埋め込むPythonコードの を取得する方法はありますか?言い換えれば既存の変数名からPyObject参照を取得することは可能ですか?

: 「OBJ」と呼ばれるオブジェクトがすでに、(スクリプトによって作成された)が存在し と私はPyObject *参照に、それを「変換」する必要がある場合は、同様の機能があります:PyObject * getObjectReferenceは( char * name)?

EDIT: 一例として、 は

PyRun_SimpleString("var = 1"); 

(または、同様にそれは同じ変数を定義する外部スクリプト可能性を使用することによって、の私は、コードの一部にいくつかのモジュールをインポートするとしましょう)

コードの別のポイントで、私はその変数を取得したいと思います。私は部分的に暗黙のうちに、それを作成したモジュールへの参照を持たずにグローバル定義された変数を取得することはできませんと言って私の質問に答え、「reading a global variable of python in c

PyObject *varPy = PyObject_GetGlobalObject("var"); 

のようなものを探しています。これは正しいです?

+1

あなたは何をしようとしているかを示すコードをいくつか追加できますか? – tynn

+0

あなたの編集に応じて:変数が入っているモジュールの名前を知っていれば、それをインポートしてモジュールへの参照を取得できます(すでにインポートされているモジュールのインポートには問題ありません)。 – DavidW

+0

また、 'PyRun_SimpleString'のドキュメントを参照すると、' __main__'モジュールが実行されていることがわかります – DavidW

答えて

0

reading a global variable of python in cと私が作ったいくつかのテストで、DavidW(あなたのおかげでありがとう)から収集された情報を組み立てる。

は、すでにロードされたモジュールへの参照を取得するために使用:

名前で参照する、グローバルに定義された変数への参照を取得し、メインモジュールをインポートしてもらうためには
PyImport_AddModule("module_name"); 

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

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

関連する問題