Содержание страницы
Выделение объектов в куче¶Allocating objects on the heap
-
PyObject *_PyObject_New(PyTypeObject *type)¶
- Возвращаемое значение: новая ссылка.
-
PyVarObject *_PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)¶
- Возвращаемое значение: новая ссылка.
-
PyObject *PyObject_Init(PyObject *op, PyTypeObject *type)¶
- Возвращаемое значение: заимствованная ссылка. Часть Stable ABI.
Инициализирует вновь выделенный объект op его типом и начальной ссылкой. Возвращает инициализированный объект. Прочие поля объекта не затрагиваются.
-
PyVarObject *PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)¶
- Возвращаемое значение: заимствованная ссылка. Часть Stable ABI.
Эта функция делает всё то же, что и
PyObject_Init(), а также инициализирует информацию о длине для объекта переменного размера.
-
PyObject_New(TYPE, typeobj)¶
Выделяет новый объект Python с использованием типа структуры C TYPE и объекта типа Python typeobj (
PyTypeObject*). Поля, не определённые заголовком объекта Python, не инициализируются. Вызывающий становится единственным владельцем ссылки на объект (т.е. её счётчик ссылок будет равен единице). Размер выделяемой памяти определяется из поляtp_basicsizeобъекта типа.Обратите внимание, что эта функция не подходит, если у typeobj установлено
Py_TPFLAGS_HAVE_GC. Для таких объектов используйтеPyObject_GC_New().
-
PyObject_NewVar(TYPE, typeobj, size)¶
Выделяет новый объект Python с использованием типа структуры C TYPE и объекта типа Python typeobj (
PyTypeObject*). Поля, не определённые заголовком объекта Python, не инициализируются. Выделенная память рассчитана на структуру TYPE плюс size (Py_ssize_t) полей размера, заданного полемtp_itemsizeобъекта typeobj. Это полезно для реализации объектов, таких как кортежи, которые могут определить свой размер во время создания. Встраивание массива полей в одно выделение уменьшает количество выделений, повышая эффективность управления памятью.Обратите внимание, что эта функция не подходит, если у typeobj установлено
Py_TPFLAGS_HAVE_GC. Для таких объектов используйтеPyObject_GC_NewVar().
-
PyObject _Py_NoneStruct¶
Объект, который виден в Python как
None. Доступ к нему следует получать только через макросPy_None, который вычисляет указатель на этот объект.
См. также
- Объекты модулей
Для выделения памяти и создания модулей расширений.
Условно устаревшие псевдонимы¶Soft-deprecated aliases
Мягко устарело, начиная с версии 3.10.
Это псевдонимы существующих функций и макросов. Они существуют только для обратной совместимости.
Мягко устаревший псевдоним |
Функция |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|