Я передаю некоторый weakrefs из Python в класс C++, но деструкторы C++ активно пытаются получить доступ касательно того, когда реальный объект уже мертв, очевидно, он отказывает...
Есть ли какой-либо подход C/API Python, чтобы узнать, жива ли ссылка Python все еще или какое-либо другое известное обходное решение для этого?
Спасибо
Если вы вызываете PyWeakref_GetObject для слабой ссылки, он должен вернуть либо Py_None, либо NULL, я забыл, какой именно. Но вы должны проверить, возвращает ли он один из них, и это скажет вам, что указанный объект больше не жив.
Из Python C API документация:
PyObject * PyWeakref_GetObject (PyObject * ref)
Возвращаемое значение: Заимствованная ссылка.
Вернуть указанный объект из слабой ссылки, ref. Если референт больше не существует, не возвращает None. Новое в версии 2.2.