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