基本上我正在使用一个应用程序的C++ API,但是没有关于其Python访问的参考。有一个变量是通过引用传递的,就像这样:
GetPoint ( Point &p, Object obj )
那么我该如何将其翻译成Python呢?是否有传递引用的符号?
基本上我正在使用一个应用程序的C++ API,但是没有关于其Python访问的参考。有一个变量是通过引用传递的,就像这样:
GetPoint ( Point &p, Object obj )
那么我该如何将其翻译成Python呢?是否有传递引用的符号?
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参数。
Point GetPoint(Object obj)
Point Object::GetPoint()
那么请查看绑定的文档或源代码。
在Python中,对象始终作为引用传递。因此,将其封装在对象中会产生类似的效果。
在Python中没有符号引用 - 正确的做法取决于您的API。要问自己的问题是谁拥有从C ++传递到Python的对象。有时,最简单的方法就是将对象复制到Python对象中,但这可能并不总是最好的选择。
您可能会对boost.python感兴趣 http://www.boost.org/doc/libs/1_38_0/libs/python/doc/index.html