2010-06-07 10 views
5

Tôi đang chuyển một số weakrefs từ Python vào lớp C++, nhưng C++ destructors đang tích cực cố gắng truy cập vào ref khi đối tượng thực đã chết, rõ ràng là nó bị treo ...Python - cách kiểm tra xem tham chiếu yếu vẫn có sẵn

Có cách tiếp cận Python C/API nào để tìm hiểu xem liệu tham chiếu Python vẫn còn sống hay bất kỳ cách giải quyết nào khác được biết đến cho điều này?

Cảm ơn

Trả lời

2

Nếu bạn gọi PyWeakref_GetObject trên tham chiếu yếu, nó sẽ trả về Py_None hoặc NULL, tôi quên điều đó. Nhưng bạn nên kiểm tra xem nó có trả về một trong số đó hay không và điều đó sẽ cho bạn biết rằng đối tượng được tham chiếu không còn sống nữa.

3

Từ Python C API tài liệu:

PyObject * PyWeakref_GetObject (PyObject * ref) giá trị
Return: tài liệu tham khảo Borrowed.
Trả lại đối tượng được tham chiếu từ tham chiếu yếu, ref. Nếu tham chiếu không còn hoạt động nữa, hãy trả về Không. Tính năng mới trong phiên bản 2.2.