Документация Python неофициальный перевод

weakref.md

64 строк · 6.2 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.10/c-api/weakref.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Объекты слабых ссылок89Python поддерживает *слабые ссылки* как объекты первого класса. Существует два конкретных типа объектов, которые напрямую реализуют слабые ссылки. Первый – простой объект-ссылка, а второй действует как прокси для исходного объекта, насколько это возможно.1011#### `int PyWeakref_Check(ob)`1213Возвращает true, если *ob* является объектом слабой ссылки или прокси-объектом. Эта функция всегда завершается успешно.1415#### `int PyWeakref_CheckRef(ob)`1617Возвращает true, если *ob* является объектом слабой ссылки. Эта функция всегда завершается успешно.1819#### `int PyWeakref_CheckProxy(ob)`2021Возвращает true, если *ob* является прокси-объектом. Эта функция всегда завершается успешно.2223#### `PyObject *PyWeakref_NewRef(PyObject *ob, PyObject *callback)`2425*Возвращаемое значение: новая ссылка.*2627*Часть [Stable ABI](https://python-all.ru/3.10/c-api/stable.html#stable).*2829Возвращает объект слабой ссылки для объекта *ob*. Всегда возвращается новая ссылка, но не гарантируется создание нового объекта; может быть возвращён существующий объект ссылки. Второй параметр, *колбэк*, может быть вызываемым объектом, который получает уведомление, когда *ob* собирается сборщиком мусора; он должен принимать один параметр – сам объект слабой ссылки. *колбэк* также может быть `None` или `NULL`. Если *ob* не является объектом, на который можно создать слабую ссылку, или если *колбэк* не является вызываемым, `None` или `NULL`, будет возвращено `NULL` и возбуждено [`TypeError`](https://python-all.ru/3.10/library/exceptions.html#TypeError).3031#### `PyObject *PyWeakref_NewProxy(PyObject *ob, PyObject *callback)`3233*Возвращаемое значение: новая ссылка.*3435*Часть [Stable ABI](https://python-all.ru/3.10/c-api/stable.html#stable).*3637Возвращает прокси-объект слабой ссылки для объекта *ob*. Всегда возвращается новая ссылка, но не гарантируется создание нового объекта; может быть возвращён существующий прокси-объект. Второй параметр, *колбэк*, может быть вызываемым объектом, который получает уведомление, когда *ob* собирается сборщиком мусора; он должен принимать один параметр – сам объект слабой ссылки. *колбэк* также может быть `None` или `NULL`. Если *ob* не является объектом, на который можно создать слабую ссылку, или если *колбэк* не является вызываемым, `None` или `NULL`, будет возвращено `NULL` и возбуждено [`TypeError`](https://python-all.ru/3.10/library/exceptions.html#TypeError).3839#### `PyObject *PyWeakref_GetObject(PyObject *ref)`4041*Возвращаемое значение: заимствованная ссылка.*4243*Часть [Stable ABI](https://python-all.ru/3.10/c-api/stable.html#stable).*4445Возвращает объект, на который ссылается слабая ссылка *ref*. Если этот объект уже удалён, возвращает `Py_None`.4647> **Примечание**48>49> Эта функция возвращает [заимствованную ссылку](https://python-all.ru/3.10/glossary.html#term-borrowed-reference) на целевой объект. Это означает, что для объекта всегда следует вызывать [`Py_INCREF()`](https://python-all.ru/3.10/c-api/refcounting.html#c.Py_INCREF), за исключением случаев, когда он не может быть уничтожен до последнего использования заимствованной ссылки.5051#### `PyObject *PyWeakref_GET_OBJECT(PyObject *ref)`5253*Возвращаемое значение: заимствованная ссылка.*5455Аналогично [`PyWeakref_GetObject()`](https://python-all.ru/3.10/c-api/weakref.html#c.PyWeakref_GetObject), но реализовано как макрос, не выполняющий проверку ошибок.5657#### `void PyObject_ClearWeakRefs(PyObject *object)`5859*Часть [Stable ABI](https://python-all.ru/3.10/c-api/stable.html#stable).*6061Эта функция вызывается обработчиком [`tp_dealloc`](https://python-all.ru/3.10/c-api/typeobj.html#c.PyTypeObject.tp_dealloc) для очистки слабых ссылок.6263Эта функция перебирает слабые ссылки для *object* и вызывает колбэки для тех ссылок, у которых они есть. Она завершает работу, когда все колбэки были вызваны.64