我正在將一些弱引發從Python傳遞到C++類,但C++析構函數正在積極嘗試訪問ref,當真實對象已經死了,顯然它崩潰了......Python - 如何檢查是否仍然有弱引用
是否有任何Python C/API方法來查找Python引用是否仍然存在或其他任何已知的解決方法?
由於
我正在將一些弱引發從Python傳遞到C++類,但C++析構函數正在積極嘗試訪問ref,當真實對象已經死了,顯然它崩潰了......Python - 如何檢查是否仍然有弱引用
是否有任何Python C/API方法來查找Python引用是否仍然存在或其他任何已知的解決方法?
由於
如果您在弱引用上調用PyWeakref_GetObject,它應該返回Py_None或NULL,我會忘記它。但是你應該檢查它是否返回其中的一個,並且會告訴你被引用的對象不再有效。
從Python C API文檔:
的PyObject * PyWeakref_GetObject(的PyObject * REF)
返回值:借參考。
從弱引用返回引用的對象,ref。如果所指對象 不再有效,則返回無。 2.2版本中的新功能。