Spec-Zone.ru › Python 3.9

Слабые ссылки

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. Это всегда возвращает новую ссылку, но не гарантирует создания нового объекта; может быть возвращен существующий объект ссылки. Второй параметр, callback, может быть вызываемым объектом, который получает уведомление при сборке мусора объекта ob; он должен принимать один параметр, который будет самим объектом слабой ссылки. callback также может быть None или NULL. Если ob не является объектом с поддержкой слабых ссылок или callback не является вызываемым объектом, None, или NULL, будет возвращено NULL и возбуждено исключение TypeError.

PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)
Значение возврата: Новая ссылка.

Возвращает объект прокси слабой ссылки для объекта ob. Это всегда возвращает новую ссылку, но не гарантирует создания нового объекта; может быть возвращен существующий объект прокси. Второй параметр, callback, может быть вызываемым объектом, который получает уведомление при сборке мусора объекта ob; он должен принимать один параметр, который будет самим объектом слабой ссылки. callback также может быть None или NULL. Если ob не является объектом с поддержкой слабых ссылок или callback не является вызываемым объектом, None, или NULL, будет возвращено NULL и возбуждено исключение TypeError.

PyObject* PyWeakref_GetObject(PyObject *ref)
Значение возврата: Заимствованная ссылка.

Возвращает ссылаемый объект из слабой ссылки ref. Если ссылаемый объект больше не активен, возвращает Py_None.

Примечание

Эта функция возвращает заимствованную ссылку на ссылаемый объект. Это означает, что вы всегда должны вызывать Py_INCREF() на объекте, за исключением случаев, когда вам известно, что объект не может быть уничтожен во время его использования.

PyObject* PyWeakref_GET_OBJECT(PyObject *ref)
Значение возврата: Заимствованная ссылка.

Аналогично PyWeakref_GetObject(), но реализовано как макрос, который не выполняет проверку ошибок.

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/c-api/weakref.html

Spec-Zone.ru

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