4

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)

ここでのベストプラクティスは何ですか?

4

1 に答える 1