3

基本上我使用的是应用程序的 C++ API,但没有关于它的 python 访问的参考。一个变量由 ref 传递,如下所示:

GetPoint ( Point  &p, Object obj )

那么我怎样才能翻译成 Python 呢?是否有通过 ref 符号?

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 回答