Документация Python неофициальный перевод

Объекты слабых ссылокWeak Reference Objects

Python поддерживает слабые ссылки как объекты первого класса. Существует два конкретных типа объектов, которые напрямую реализуют слабые ссылки. Первый – простой объект-ссылка, а второй действует как прокси для исходного объекта, насколько это возможно.

int PyWeakref_Check(ob)

Возвращает true, если ob является объектом ссылки или прокси.

Новое в версии 2.2.

int PyWeakref_CheckRef(ob)

Возвращает true, если ob является объектом ссылки.

Новое в версии 2.2.

int PyWeakref_CheckProxy(ob)

Возвращает true, если ob является прокси-объектом.

Новое в версии 2.2.

PyObject* PyWeakref_NewRef(PyObject *ob, PyObject *callback)
Возвращаемое значение: новая ссылка.

Возвращает объект слабой ссылки для объекта ob. Всегда возвращает новую ссылку, но не гарантирует создание нового объекта; может быть возвращён уже существующий объект ссылки. Второй параметр, колбэк, может быть вызываемым объектом, который получает уведомление, когда ob удаляется сборщиком мусора; он должен принимать один параметр – сам объект слабой ссылки. колбэк также может быть None или NULL. Если ob не является объектом, поддерживающим слабые ссылки, или если колбэк не является вызываемым, None или NULL, функция возвращает NULL и возбуждает TypeError.

Новое в версии 2.2.

PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
Возвращаемое значение: новая ссылка.

Возвращает прокси-объект слабой ссылки для объекта ob. Всегда возвращает новую ссылку, но не гарантирует создание нового объекта; может быть возвращён уже существующий прокси-объект. Второй параметр, колбэк, может быть вызываемым объектом, который получает уведомление, когда ob удаляется сборщиком мусора; он должен принимать один параметр – сам объект слабой ссылки. колбэк также может быть None или NULL. Если ob не является объектом, поддерживающим слабые ссылки, или если колбэк не является вызываемым, None или NULL, функция возвращает NULL и возбуждает TypeError.

Новое в версии 2.2.

PyObject* PyWeakref_GetObject(PyObject *ref)
Возвращаемое значение: заимствованная ссылка.

Возвращает объект, на который ссылается слабая ссылка ref. Если этот объект уже удалён, возвращает Py_None.

Новое в версии 2.2.

Предупреждение

Эта функция возвращает заимствованную ссылку на указанный объект. Это означает, что для объекта всегда следует вызывать Py_INCREF(), если только не известно, что он не может быть уничтожен во время его использования.

PyObject* PyWeakref_GET_OBJECT(PyObject *ref)
Возвращаемое значение: заимствованная ссылка.

Аналогично PyWeakref_GetObject(), но реализовано как макрос, не выполняющий проверку ошибок.

Новое в версии 2.2.