Spec-Zone.ru › Python 3.8

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

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.8/c-api/weakref.html

Spec-Zone.ru

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