Spec-Zone.ru › Python 3.12

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

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API