Python Swig包装器:如何访问底层PyObject

1 投票
1 回答
687 浏览
提问于 2025-04-16 05:58

我有一个类A,里面用%extend实现了一个方法foo:

class A { ... %extend { void foo() { self->foo_impl(); } }

现在我想在foo_impl里面增加一个A的引用计数,但我只有A*(作为self)。

问题是:我该如何编写或包装函数foo,以便同时访问A*和底层的PyObject*?

谢谢

1 个回答

1

我觉得这是不可能的。如果你需要增加引用计数,那是因为你不想让这个C++对象在超出作用域时被销毁,因为在其他地方还有指向这个对象的指针。在这种情况下,可以考虑使用DISOWN类型映射,这样目标语言就不会认为它“拥有”这个C++对象,这样就不会被销毁。

撰写回答