3

基本的にアプリの C++ API を使用していますが、その python アクセスの参照はありません。次のように、1 つの変数が ref によって渡されます。

GetPoint ( Point  &p, Object obj )

どうすればPythonに翻訳できますか?パス バイ リファレンス シンボルはありますか?

4

5 に答える 5

5

Python には参照記号による受け渡しはありません。

渡されたポイントを変更するだけで、変更は呼び出し元の関数から表示されます。

>>> def change(obj):
...     obj.x = 10
...
>>> class Point(object): x,y = 0,0
...
>>> p = Point()
>>> p.x
0
>>> change(p)
>>> p.x
10

...

だから私はそれを次のように渡す必要があります: GetPoint (p, obj)?

はい、Iraimbilanjaには良い点があります。バインドによって、out パラメーターを使用するのではなく、ポイントを返すように呼び出しが変更された可能性があります。

于 2009-02-23T18:00:41.370 に答える
3

Python バインディングがその署名を次のように変えた可能性があります。

Point GetPoint(Object obj)

あるいは:

Point Object::GetPoint()

そのため、バインディングのドキュメントまたはソースを調べてください。

于 2009-02-23T18:02:48.913 に答える
2

Python は参照の値を変数に渡すと確信しています。この記事は、おそらく私よりもうまく説明できます。

于 2009-02-23T18:01:43.380 に答える
1

Python では、オブジェクトは常に参照として渡されます。したがって、オブジェクトにラップすると、同様の効果が得られます。

于 2009-02-23T18:02:10.540 に答える
1

Python にはシンボルによる参照はありません。正しいことは API によって異なります。自問すべき問題は、C++ から python に渡されたオブジェクトを誰が所有しているかということです。オブジェクトを python オブジェクトにコピーするのが最も簡単な場合もありますが、それが常に最善であるとは限りません。

あなたはboost.python http://www.boost.org/doc/libs/1_38_0/libs/python/doc/index.htmlに興味があるかもしれません

于 2009-02-23T18:04:21.767 に答える