Слабые ссылочные объекты¶
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)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает слабый ссылочный объект для объекта ob. Это всегда будет возвращать новую ссылку, но не гарантируется создание нового объекта; может быть возвращен существующий объект ссылки. Второй параметр, callback, может быть вызываемым объектом, который получает уведомление, когда ob будет собран; он должен принимать один параметр, который будет самим объектом слабой ссылки. callback также может быть
None
илиNULL
. Если ob не является слабоссылающимся объектом, или если callback не является вызываемым,None
илиNULL
, это вернетNULL
и вызоветTypeError
.
-
PyObject *
PyWeakref_NewProxy
(PyObject *ob, PyObject *callback)¶ - Return value: New reference. Part of the Stable ABI.
Возвращает слабый ссылочный прокси-объект для объекта ob. Это всегда будет возвращать новую ссылку, но не гарантируется создание нового объекта; может быть возвращен существующий прокси-объект. Второй параметр, callback, может быть вызываемым объектом, который получает уведомление, когда ob будет собран; он должен принимать один параметр, который будет самим объектом слабой ссылки. callback также может быть
None
илиNULL
. Если ob не является слабоссылающимся объектом, или если callback не является вызываемым,None
илиNULL
, это вернетNULL
и вызоветTypeError
.
-
PyObject *
PyWeakref_GetObject
(PyObject *ref)¶ - Return value: Borrowed reference. Part of the Stable ABI.
Возвращает объект, на который ссылается слабая ссылка, ref. Если референт больше не существует, возвращается
Py_None
.Примечание
Эта функция возвращает borrowed reference на объект со ссылкой. Это означает, что вы всегда должны вызывать
Py_INCREF()
на объекте, за исключением случаев, когда он не может быть уничтожен до последнего использования заимствованной ссылки.
-
PyObject *
PyWeakref_GET_OBJECT
(PyObject *ref)¶ - Return value: Borrowed reference.
Аналогичен
PyWeakref_GetObject()
, но реализован как макрос, который не проверяет ошибки.