C クラスをラップする場合:
from ._ffi import ffi, lib
class MyClass(object):
def __init__(self):
self._c_class = lib.MyClass_create()
それが確実にlib.MyClass_destroy(…)
呼び出されるようにするためのベストプラクティスは何ですか?
Python オブジェクトが GC されたときにデストラクタcffi
を呼び出すオブジェクトの周りに、ある種のラッパーがあります。たとえば、次のようなものです。
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)
ここでのベストプラクティスは何ですか?