基本上我使用的是应用程序的 C++ API,但没有关于它的 python 访问的参考。一个变量由 ref 传递,如下所示:
GetPoint ( Point &p, Object obj )
那么我怎样才能翻译成 Python 呢?是否有通过 ref 符号?
基本上我使用的是应用程序的 C++ API,但没有关于它的 python 访问的参考。一个变量由 ref 传递,如下所示:
GetPoint ( Point &p, Object obj )
那么我怎样才能翻译成 Python 呢?是否有通过 ref 符号?
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 参数。
您的 Python 绑定可能已将该签名转换为:
Point GetPoint(Object obj)
甚至:
Point Object::GetPoint()
因此,请查看绑定的文档或来源。
我很确定 Python 会将引用的值传递给变量。这篇文章可能比我解释得更好。
在 Python 中,对象总是作为引用传递。所以包裹在对象中会产生类似的效果。
python 中没有按符号引用 - 正确的做法取决于您的 API。要问自己的问题是谁拥有从 C++ 传递给 python 的对象。有时,最简单的方法是将对象复制到 python 对象中,但这可能并不总是最好的做法。
您可能对 boost.python 感兴趣http://www.boost.org/doc/libs/1_38_0/libs/python/doc/index.html