Объекты слабых ссылок
Python поддерживает слабые ссылки как объекты первого класса. Существуют два специальных типа объектов, напрямую реализующих слабые ссылки. Первый — простой объект ссылки, второй действует как прокси исходного объекта в той мере, в какой это возможно.
-
int PyWeakref_Check(PyObject *ob) -
Возвращает true, если ob является объектом ссылки или прокси. Эта функция всегда завершается успешно.
-
int PyWeakref_CheckRef(PyObject *ob) -
Возвращает true, если ob является объектом ссылки. Эта функция всегда завершается успешно.
-
int PyWeakref_CheckProxy(PyObject *ob) -
Возвращает true, если ob является объектом прокси. Эта функция всегда завершается успешно.
-
PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback) -
Возвращаемое значение: новая ссылка. Часть стабильного ABI.
Возвращает объект слабой ссылки на объект ob. Функция всегда возвращает новую ссылку, но не гарантирует создание нового объекта: может быть возвращён существующий объект ссылки. Второй параметр, callback, может быть вызываемым объектом, который получает уведомление при сборке мусора для ob; он должен принимать один параметр — сам объект слабой ссылки. callback также может быть
NoneилиNULL. Если ob не поддерживает слабые ссылки или callback не является вызываемым объектом,NoneилиNULL, функция возвращаетNULLи вызывает исключениеTypeError.
-
PyObject *PyWeakref_NewProxy(PyObject *ob, PyObject *callback) -
Возвращаемое значение: новая ссылка. Часть стабильного ABI.
Возвращает объект прокси слабой ссылки на объект ob. Функция всегда возвращает новую ссылку, но не гарантирует создание нового объекта: может быть возвращён существующий объект прокси. Второй параметр, callback, может быть вызываемым объектом, который получает уведомление при сборке мусора для ob; он должен принимать один параметр — сам объект слабой ссылки. callback также может быть
NoneилиNULL. Если ob не поддерживает слабые ссылки или callback не является вызываемым объектом,NoneилиNULL, функция возвращаетNULLи вызывает исключениеTypeError.
-
PyObject *PyWeakref_GetObject(PyObject *ref) -
Возвращаемое значение: заимствованная ссылка. Часть стабильного ABI.
Возвращает объект, на который ссылается слабая ссылка ref. Если объект больше не существует, возвращает
Py_None.Примечание
Эта функция возвращает заимствованную ссылку на объект, на который ссылается ссылка. Это означает, что всегда следует вызывать для объекта
Py_INCREF(), кроме случаев, когда объект не может быть уничтожен до последнего использования заимствованной ссылки.
-
PyObject *PyWeakref_GET_OBJECT(PyObject *ref) -
Возвращаемое значение: заимствованная ссылка.
Подобна
PyWeakref_GetObject(), но не выполняет проверку ошибок.
-
void PyObject_ClearWeakRefs(PyObject *object) -
Часть стабильного ABI.
Эта функция вызывается обработчиком
tp_deallocдля очистки слабых ссылок.Функция проходит по слабым ссылкам на object и вызывает обратные вызовы для тех ссылок, у которых они есть. Она возвращает управление после попытки вызвать все обратные вызовы.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/c-api/weakref.html