考慮以下的Python的ctypes - C++結合:的Python ctypes的,C++對象的破壞
// C++
class A
{
public:
void someFunc();
};
A* A_new() { return new A(); }
void A_someFunc(A* obj) { obj->someFunc(); }
void A_destruct(A* obj) { delete obj; }
# python
from ctypes import cdll
libA = cdll.LoadLibrary(some_path)
class A:
def __init__(self):
self.obj = libA.A_new()
def some_func(self):
libA.A_someFunc(self.obj)
什麼是刪除C++對象的最好方式,當不需要Python對象了。
[編輯] 我說有人建議刪除功能,但問題仍然存在由誰來當函數被調用。它應該儘可能方便。
何時調用__del__函數? – tauran 2010-09-16 08:42:58
當「A」的引用計數達到零時,就在清理對象之前。 – 2010-09-16 08:44:43
這種情況何時發生?在python文檔中找不到它們。這是否意味着python決定何時執行__del__? – tauran 2010-09-16 08:47:56