Объекты слабых ссылок¶Weak Reference Objects
Python поддерживает слабые ссылки как объекты первого класса. Существует два конкретных типа объектов, которые напрямую реализуют слабые ссылки. Первый – простой объект-ссылка, а второй действует как прокси для исходного объекта, насколько это возможно.
-
int
PyWeakref_Check(ob)¶ Возвращает true, если ob является объектом ссылки или прокси.
-
int
PyWeakref_CheckRef(ob)¶ Возвращает true, если ob является объектом ссылки.
-
int
PyWeakref_CheckProxy(ob)¶ Возвращает true, если ob является прокси-объектом.
-
PyObject*
PyWeakref_NewRef(PyObject *ob, PyObject *callback)¶ - Возвращаемое значение: новая ссылка.
Возвращает объект слабой ссылки для объекта ob. Всегда возвращает новую ссылку, но не гарантирует создание нового объекта; может быть возвращён уже существующий объект ссылки. Второй параметр, колбэк, может быть вызываемым объектом, который получает уведомление, когда ob удаляется сборщиком мусора; он должен принимать один параметр – сам объект слабой ссылки. колбэк также может быть
Noneили NULL. Если ob не является объектом, поддерживающим слабые ссылки, или если колбэк не является вызываемым,Noneили NULL, функция возвращает NULL и возбуждаетTypeError.
-
PyObject*
PyWeakref_NewProxy(PyObject *ob, PyObject *callback)¶ - Возвращаемое значение: новая ссылка.
Возвращает прокси-объект слабой ссылки для объекта ob. Всегда возвращает новую ссылку, но не гарантирует создание нового объекта; может быть возвращён уже существующий прокси-объект. Второй параметр, колбэк, может быть вызываемым объектом, который получает уведомление, когда ob удаляется сборщиком мусора; он должен принимать один параметр – сам объект слабой ссылки. колбэк также может быть
Noneили NULL. Если ob не является объектом, поддерживающим слабые ссылки, или если колбэк не является вызываемым,Noneили NULL, функция возвращает NULL и возбуждаетTypeError.
-
PyObject*
PyWeakref_GetObject(PyObject *ref)¶ - Возвращаемое значение: заимствованная ссылка.
Возвращает объект, на который ссылается слабая ссылка ref. Если этот объект уже удалён, возвращает
Py_None.Примечание
Эта функция возвращает заимствованную ссылку на указанный объект. Это означает, что для объекта всегда следует вызывать
Py_INCREF(), если только не известно, что он не может быть уничтожен во время его использования.
-
PyObject*
PyWeakref_GET_OBJECT(PyObject *ref)¶ - Возвращаемое значение: заимствованная ссылка.
Аналогично
PyWeakref_GetObject(), но реализовано как макрос, не выполняющий проверку ошибок.