2010-06-07 5 views
5

Estoy pasando algunos weakrefs de Python a la clase C++, pero los destructores C++ están intentando acceder al ref cuando el objeto real ya está muerto, obviamente se bloquea ...Python: cómo comprobar si aún hay disponible una referencia débil

¿Hay algún enfoque de Python C/API para averiguar si la referencia de Python sigue viva o alguna otra solución conocida para esto?

Gracias

Respuesta

2

Si llama a PyWeakref_GetObject en la referencia débil, debe devolver Py_None o NULL, se me olvida cuál. Pero debería verificar si está devolviendo uno de esos y eso le dirá que el objeto al que se hace referencia ya no está vivo.

3

De Python C API documentación:

PyObject * PyWeakref_GetObject (PyObject * ref) Valor
de devolución: referencia prestado.
Devuelve el objeto al que se hace referencia de una referencia débil, ref. Si el referente ya no está activo, devuelve None. Nuevo en la versión 2.2.

Cuestiones relacionadas