Объекты слабых ссылок¶Weak Reference Objects
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. Всегда возвращает новую ссылку, но не гарантирует создания нового объекта; может быть возвращён существующий объект ссылки. Второй параметр, колбэк, может быть вызываемым объектом, который получает уведомление, когда ob собирается сборщиком мусора; он должен принимать один параметр – сам объект слабой ссылки. колбэк также может быть None или NULL. Если ob не является объектом, поддерживающим слабые ссылки, или если колбэк не является вызываемым, None или NULL, то возвращается NULL и возбуждается TypeError.
- PyObject* PyWeakref_NewProxy(PyObject *ob, PyObject *callback)¶
- Возвращаемое значение: новая ссылка.
Возвращает прокси-объект слабой ссылки для объекта ob. Всегда возвращает новую ссылку, но не гарантирует создания нового объекта; существующий прокси-объект может быть возвращён. Второй параметр, колбэк, может быть вызываемым объектом, который получает уведомление, когда ob собирается сборщиком мусора; он должен принимать один параметр – сам объект слабой ссылки. колбэк также может быть None или NULL. Если ob не является объектом, поддерживающим слабые ссылки, или если колбэк не является вызываемым, None или NULL, то возвращается NULL и возбуждается TypeError.
- PyObject* PyWeakref_GetObject(PyObject *ref)¶
- Возвращаемое значение: заимствованная ссылка.
Возвращает объект, на который ссылается слабая ссылка ref. Если объект-цель больше не существует, возвращает None.
- PyObject* PyWeakref_GET_OBJECT(PyObject *ref)¶
- Возвращаемое значение: заимствованная ссылка.
Похожа на PyWeakref_GetObject, но реализована в виде макроса, который не выполняет проверку ошибок.