python中变量的值通过什么访问_关于变量:如何在Python中通过ref传递值?

基本上我使用的是一个应用程序的C++ API,但是没有它的Python访问的引用。引用传递一个变量,如下所示:

GetPoint ( Point  &p, Object obj )

那么我该如何翻译成python呢?是否有旁路参考符号?

一些相关问题和一些相关答案:stackoverflow.com/questions/534375/passing-values-in-python

谢谢你忘了那个。

我知道这是一个古老的问题,但对于未来的读者来说:当将Python与其他语言的API一起使用时,您应该能够直接访问成员,而不是使用getter和setter。如果Python绑定有任何好处,那么属性实际上就是属性,您将通过访问器进行重定向,而不知道它。getter和setter并不是很像python,所以我强调在使用wxpython或从jython挥杆时不要使用它们。

在Python中没有旁路引用符号。

只需修改传入点,您的修改将从调用函数中可见。

>>> def change(obj):

...     obj.x = 10

...

>>> class Point(object): x,y = 0,0

...

>>> p = Point()

>>> p.x

0

>>> change(p)

>>> p.x

10

So I should pass it like: GetPoint (p, obj)?

是的,虽然伊拉姆比兰扎有一个很好的观点。绑定可能已更改调用以返回该点,而不是使用out参数。

您的python绑定可能已将该签名转换为:

Point GetPoint(Object obj)

甚至:

Point Object::GetPoint()

因此,请查看绑定的文档或源。

谢谢,对于状态来说,返回是一个布尔值,但是必须传递该点,否则,它将抛出错误数量的args异常。

我很确定python将引用的值传递给一个变量。这篇文章可能比我解释得更好。

在Python中没有按符号引用-正确的操作取决于您的API。问自己的问题是谁拥有从C++传递到Python的对象。有时,将对象复制到Python对象中是最简单的方法,但这并不总是最好的方法。

您可能对boost.python感兴趣,http://www.boost.org/doc/libs/1_38_0/libs/python/doc/index.html

对象在Python中始终作为引用传递。所以在对象中进行包装会产生类似的效果。

这是正确的答案。python对象总是以相同的方式传递(通过引用)。有些对象(例如int)是不可变的,给人的印象是通过值传递…不,也是这样的……永远!-)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值