Spec-Zone.ru › Python 3.11

Слабые ссылки объектов

Python поддерживает слабые ссылки как объекты первого класса. Существуют два конкретных типа объектов, которые напрямую реализуют слабые ссылки. Первый — это простой объект ссылки, а второй действует как прокси для исходного объекта, насколько это возможно.

int PyWeakref_Check(PyObject *ob)

Возвращает true, если объект является либо объектом ссылки, либо прокси-объектом. Эта функция всегда выполняется успешно.

int PyWeakref_CheckRef(PyObject *ob)

Возвращает true, если объект является объектом ссылки. Эта функция всегда выполняется успешно.

int PyWeakref_CheckProxy(PyObject *ob)

Возвращает true, если объект является объектом-прокси. Эта функция всегда выполняется успешно.

PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback)
Значение возврата: Новая ссылка. Часть Стабильной ABI.

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

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

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

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

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

Примечание

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

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

Аналогично PyWeakref_GetObject(), но не производит проверки на ошибки.

void PyObject_ClearWeakRefs(PyObject *object)
Часть Стабильной ABI.

Эта функция вызывается обработчиком tp_dealloc для очистки слабых ссылок.

Эта функция перебирает слабые ссылки для объекта и вызывает обратные вызовы для тех ссылок, которые имеют один. Она возвращает, когда все обратные вызовы завершены.

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

Spec-Zone.ru

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