2010-10-23 32 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++對象,因此它不會被銷燬。