Alocando objetos na heap

PyObject *_PyObject_New(PyTypeObject *type)
Retorna valor: Nova referência.
PyVarObject *_PyObject_NewVar(PyTypeObject *type, Py_ssize_t size)
Retorna valor: Nova referência.
PyObject *PyObject_Init(PyObject *op, PyTypeObject *type)
Retorna valor: Referência emprestada. Parte da ABI Estável.

Inicializa um objeto op recém-alocado com seu tipo e referência inicial. Retorna o objeto inicializado. Outros campos do objeto não são afetados.

PyVarObject *PyObject_InitVar(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)
Retorna valor: Referência emprestada. Parte da ABI Estável.

Isto faz tudo que o PyObject_Init() faz e também inicializa a informação de comprimento para um objeto de tamanho variável.

PyObject_New(TYPE, typeobj)

Aloca um novo objeto Python usando o tipo de estrutura do C TYPE e o objeto Python do tipo typeobj (PyTypeObject*). Campos não definidos pelo cabeçalho do objeto Python não são inicializados. O chamador será dono da apenas a referência ao objeto (isto é, sua contagem de referências será uma). O tamanho da alocação de memória é determinado do campo tp_basicsize do objeto tipo.

Note que esta função não é adequada se typeobj tiver Py_TPFLAGS_HAVE_GC definido. Para tais objetos, use PyObject_GC_New() em vez disso.

PyObject_NewVar(TYPE, typeobj, size)

Aloca um novo objeto Python usando o tipo de estrutura do C TYPE e o objeto Python do tipo typeobj (PyTypeObject*). Campos não definidos pelo cabeçalho do objeto Python não são inicializados. A memória alocada permite a estrutura TYPE e os campos size (Py_ssize_t) do tamanho dado pelo campo tp_itemsize do tipo typeobj. Isto é útil para implementar objetos como tuplas, as quais são capazes de determinar seu tamanho no tempo da construção. Incorporando o vetor de campos dentro da mesma alocação diminuindo o numero de alocações, melhorando a eficiência do gerenciamento de memória.

Note que esta função não é adequada se typeobj tiver Py_TPFLAGS_HAVE_GC definido. Para tais objetos, use PyObject_GC_NewVar() em vez disso.

PyObject _Py_NoneStruct

Objeto o qual é visível no Python como None. Isto só deve ser acessado usando a macro Py_None, o qual avalia como um ponteiro para este objeto.

Ver também

Objetos do Módulo

Para alocar e criar módulos de extensão.

Apelidos descontinuados

Esses são apelidos suavemente descontinuados para funções e macros existentes. Eles existem unicamente para fins de retrocompatibilidade.

Apelido descontinuado

Função

PyObject_NEW(type, typeobj)

PyObject_New

PyObject_NEW_VAR(type, typeobj, n)

PyObject_NewVar

PyObject_INIT(op, typeobj)

PyObject_Init()

PyObject_INIT_VAR(op, typeobj, n)

PyObject_InitVar()

PyObject_MALLOC(n)

PyObject_Malloc()

PyObject_REALLOC(p, n)

PyObject_Realloc()

PyObject_FREE(p)

PyObject_Free()

PyObject_DEL(p)

PyObject_Free()

PyObject_Del(p)

PyObject_Free()