【发布时间】:2015-08-28 22:30:38
【问题描述】:
如果我要包装一个 C 类:
from ._ffi import ffi, lib
class MyClass(object):
def __init__(self):
self._c_class = lib.MyClass_create()
确保调用lib.MyClass_destroy(…) 的最佳做法是什么?
cffi 是否有某种对象包装器,当 Python 对象被 GC'd 时会调用析构函数,例如:
my_obj = managed(lib.MyClass_create(), destructor=lib.MyClass_destroy)
或者该析构逻辑应该在类的__del__ 中?比如:
class MyClass(object):
def __del__(self):
if self._c_class is not None:
lib.MyClass_destroy(self._c_class)
这里有哪些最佳做法?
【问题讨论】:
-
两者都可以。 (“托管”()是“ffi.gc()”。)
标签: python python-cffi