Слабые ссылочные объекты¶
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(), но реализована как макрос, который не проверяет на ошибки.
