Python - 如何检查弱引用是否仍然可用

时间:2010-06-07 21:43:50

标签: c++ python reference weak

我将Python中的一些弱参数传递给C ++类,但是当真实对象已经死亡时,C ++析构函数正在积极尝试访问ref,显然它崩溃了......

是否有任何Python C / API方法可以确定Python引用是否仍处于活动状态或其他任何已知的解决方法?

由于

2 个答案:

答案 0 :(得分:3)

来自Python C API文档:

  

PyObject * PyWeakref_GetObject(PyObject * ref)
         返回值:借用参考。
     从弱引用返回引用的对象,ref。如果指称      不再存在,返回无。 2.2版中的新功能。

答案 1 :(得分:2)

如果你在弱引用上调用PyWeakref_GetObject,它应该返回Py_None或NULL,我忘记了哪一个。但你应该检查它是否正在返回其中一个,这将告诉你引用的对象不再存在。