PythonからいくつかのweakrefをC++クラスに渡していますが、実際のオブジェクトがすでに死んでいるときに、C++デストラクタが積極的にrefにアクセスしようとしています。明らかにクラッシュします...
Pythonリファレンスがまだ生きているかどうかを確認するためのPythonC/ APIアプローチ、またはこれに対する他の既知の回避策はありますか?
ありがとう
Python C APIドキュメントから:
PyObject * PyWeakref_GetObject(PyObject * ref)
戻り値:借用された参照。
弱参照から参照されたオブジェクトを返します。指示対象がもう生きていない場合は、Noneを返します。バージョン2.2の新機能。
弱参照でPyWeakref_GetObjectを呼び出すと、Py_NoneまたはNULLのいずれかが返されるはずですが、どちらかを忘れています。ただし、それらの1つが返されるかどうかを確認する必要があります。これにより、参照されるオブジェクトが存在しなくなったことがわかります。