在堆上分配物件

PyObject *_PyObject_New(PyTypeObject *type)
返回值:新的引用。
PyVarObject *_PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)
返回值:新的引用。
PyObject *PyObject_Init(PyObject *op, PyTypeObject *type)
返回值:借用的引用。 穩定 ABI 的一部分。

使用其型別和初始引用來初始化新分配的物件 *op*。 返回初始化的物件。 物件的其他欄位不受影響。

PyVarObject *PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)
返回值:借用的引用。 穩定 ABI 的一部分。

此函式執行 PyObject_Init() 的所有操作,並初始化可變大小物件的長度資訊。

PyObject_New(TYPE, typeobj)

使用 C 結構型別 *TYPE* 和 Python 型別物件 *typeobj* (PyTypeObject*)分配新的 Python 物件。 未由 Python 物件頭定義的欄位不會初始化。 呼叫者將擁有對物件的唯一引用(即其引用計數將為 1)。 記憶體分配的大小由型別物件的 tp_basicsize 欄位確定。

PyObject_NewVar(TYPE, typeobj, size)

使用 C 結構型別 *TYPE* 和 Python 型別物件 *typeobj*(PyTypeObject*)分配新的 Python 物件。 未由 Python 物件頭定義的欄位不會初始化。 分配的記憶體允許 *TYPE* 結構加上 *size* (Py_ssize_t) 欄位,該欄位的大小由 *typeobj* 的 tp_itemsize 欄位給出。 這對於實現諸如元組之類的物件很有用,元組能夠在構造時確定其大小。 將欄位陣列嵌入到同一分配中會減少分配次數,從而提高記憶體管理效率。

void PyObject_Del(void *op)

使用 PyObject_NewPyObject_NewVar 釋放分配給物件的記憶體。 這通常從物件型別中指定的 tp_dealloc 處理程式呼叫。 在此呼叫之後不應訪問物件的欄位,因為該記憶體不再是有效的 Python 物件。

PyObject _Py_NoneStruct

在 Python 中可見為 None 的物件。 這應該僅使用 Py_None 宏來訪問,該宏求值為指向此物件的指標。

另請參閱

PyModule_Create()

用於分配和建立擴充套件模組。