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