C++ プログラムの swig インターフェイス用の Python ラッパーを作成しています。
Python オブジェクトがどのように削除されたかを「知る」方法があるかどうか知りたいです。オブジェクトがガベージ コレクターによって削除された場合、ラッパーは基になる C++ オブジェクトに対して何もしませんが、ユーザーが意図的にオブジェクト (``del オブジェクト) を削除した場合、ラッパーはそれを検出し、参照を解除します。基になるオブジェクトも削除されるようにします。
私はすでにこれについてグーグルで試しましたが、何も見つかりませんでした。私が見つけた唯一のことは、(どうやら)__del__
がガベージ コレクターと del コマンドの両方によって呼び出され、どちらが呼び出したかを区別する方法がないように思われることです。
誰かが私が間違っていることを証明してくれることを願っています!