2010-10-23 61 views
1

我有A类包裹着foo方法实现并采用延长%:的Python痛饮包装:如何访问底层的PyObject

类A { ... %延长{ 无效美孚(){ 自我 - > foo_impl(); } }

现在我想增加ref计数到foo_impl里面的一个A,但是我只有A *(as self)。

问题:如何编写/包装函数foo,以便我既可以访问A *,也可以访问底层PyObject *?

谢谢

+0

可以有多个底层'PyObject'指向相同的C++对象。你可以得到* a *'PyObject'([example](http://stackoverflow.com/a/5849116/168175)),但它不会是*'PyObject'。 – Flexo 2012-04-02 13:40:10

回答

1

我认为这是不可能的。如果你需要增加refcount,那是因为你不希望C++对象在超出作用域时被销毁,因为在其他地方有一个指向该对象的指针。在这种情况下,查看使用DISOWN typemap来确保目标语言不认为它拥有C++对象,因此它不会被销毁。