我如何得到*Wig对象与C++对象在SWIG中的关联? 我可以使用SigiguNePoTeObjoc将C++对象传递给Python,但它不是pythObject,所以我不能正确地使用它。 我的问题是:有没有一种方法可以从Python中创建C++对象的pyObject *,在C++中? < p>每个C++对象没有一个唯一的pyObject。例如,如果包装以下内容: struct foo {}; struct foo *test() { static struct foo inst; return &inst; }

我如何得到*Wig对象与C++对象在SWIG中的关联? 我可以使用SigiguNePoTeObjoc将C++对象传递给Python,但它不是pythObject,所以我不能正确地使用它。 我的问题是:有没有一种方法可以从Python中创建C++对象的pyObject *,在C++中? < p>每个C++对象没有一个唯一的pyObject。例如,如果包装以下内容: struct foo {}; struct foo *test() { static struct foo inst; return &inst; },c++,python,swig,C++,Python,Swig,Python内部的每一个测试调用都将返回一个新的PyObject——SWIG很难知道它们是相同的 返回的PyObjects是薄包装,即围绕没有本地状态的C++对象的代理。从Python的角度来看,这些都看起来和行为类似于一个对象,因为它们把所有的东西都委托给C++对象。 如果你想得到一个pyObject,你可以用这种方法,但是一般来说这不是一个好主意,因为即使你提到的对象是同一个C++对象,对这个对象的任何改变都是不可见的。你想用Python提供的C++成员函数的签名是什么?您打算如何从Pyth

Python内部的每一个测试调用都将返回一个新的PyObject——SWIG很难知道它们是相同的

返回的PyObjects是薄包装,即围绕没有本地状态的C++对象的代理。从Python的角度来看,这些都看起来和行为类似于一个对象,因为它们把所有的东西都委托给C++对象。


如果你想得到一个pyObject,你可以用这种方法,但是一般来说这不是一个好主意,因为即使你提到的对象是同一个C++对象,对这个对象的任何改变都是不可见的。

你想用Python提供的C++成员函数的签名是什么?您打算如何从Python调用它?在我的例子中,我想得到C++结构实例的Python实例。我有多个窗口和一个全局回调窗口事件。因此,如果我从Python创建3个窗口,那么我希望回调函数提供与我在上面创建的3个窗口相同的一个窗口。现在它正在创建一个新的PyObject*,因此它无法与从Python创建的三个窗口相匹配,因为它是一个不同的PyObject*。我不明白您为什么要使用/the/Python包装器对象。我认为,从C++中,你应该只操纵C++成员,或者编写python的C++代码。使用python意识C++代码,是指将某些参数作为pyObjase*返回或返回的方法,使用python /capi调用,例如pyObjut.CalpDead方法。我想拥有//python包装对象,这样我就知道,从Python回调DEF中,事件发生在哪个窗口。如果Python中的回调给出的对象与我在Python脚本中创建的对象不同,那么在Python def中,我无法知道事件发生在哪个窗口。我必须在创建窗口时为其分配ID,但我宁愿不这样做。我通过设置窗口对象的回调来避免这种情况,但问题仍然存在。