Объекты слабых ссылок¶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(), но реализовано как макрос, не выполняющий проверку ошибок.