Python Swig包装器:如何访问底层PyObject
我有一个类A,里面用%extend实现了一个方法foo:
class A { ... %extend { void foo() { self->foo_impl(); } }
现在我想在foo_impl里面增加一个A的引用计数,但我只有A*(作为self)。
问题是:我该如何编写或包装函数foo,以便同时访问A*和底层的PyObject*?
谢谢
1 个回答
1
我觉得这是不可能的。如果你需要增加引用计数,那是因为你不想让这个C++对象在超出作用域时被销毁,因为在其他地方还有指向这个对象的指针。在这种情况下,可以考虑使用DISOWN类型映射,这样目标语言就不会认为它“拥有”这个C++对象,这样就不会被销毁。