Розміщення об’єктів у купі¶
-
PyObject *_PyObject_New(PyTypeObject *type)¶
- Return value: New reference.
-
PyVarObject *_PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)¶
- Return value: New reference.
-
PyObject *PyObject_Init(PyObject *op, PyTypeObject *type)¶
- Return value: Borrowed reference. Part of the Stable ABI.
Initialize a newly allocated object op with its type and initial reference. Returns the initialized object. Other fields of the object are not affected.
-
PyVarObject *PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)¶
- Return value: Borrowed reference. Part of the Stable ABI.
Це робить все, що робить
PyObject_Init()
, а також ініціалізує інформацію про довжину для об’єкта змінного розміру.
-
PyObject_New(TYPE, typeobj)¶
Allocate a new Python object using the C structure type TYPE and the Python type object typeobj (
PyTypeObject*
). Fields not defined by the Python object header are not initialized. The caller will own the only reference to the object (i.e. its reference count will be one). The size of the memory allocation is determined from thetp_basicsize
field of the type object.
-
PyObject_NewVar(TYPE, typeobj, size)¶
Виділяє новий об’єкт Python, використовуючи структурний тип C TYPE та об’єкт типу Python typeobj (
PyTypeObject*
). Поля, не визначені в заголовку об’єкта Python, не ініціалізуються. Виділена пам’ять дозволяє розмістити структуру TYPE плюс поля size (Py_ssize_t
) розміром, заданим полемtp_itemsize
об’єкта typeobj. Це корисно для реалізації об’єктів типу кортежів, які можуть визначати свій розмір під час конструювання. Вбудовування масиву полів в один розподіл зменшує кількість розподілів, покращуючи ефективність управління пам’яттю.
-
void PyObject_Del(void *op)¶
Звільняє пам’ять, виділену для об’єкта за допомогою
PyObject_New
абоPyObject_NewVar
. Зазвичай викликається з обробникаtp_dealloc
, вказаного в типі об’єкта. Після цього виклику не слід звертатися до полів об’єкта, оскільки пам’ять більше не є дійсним об’єктом Python.
-
PyObject _Py_NoneStruct¶
Об’єкт, видимий у Python як
None
. Доступ до нього можна отримати лише за допомогою макросуPy_None
, який обчислює вказівник на цей об’єкт.
Дивись також
PyModule_Create()
Для розміщення та створення модулів розширення.