Слабые ссылки
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