Alocando Objetos na Pilha

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. Part of the Stable ABI.

Inicializa um objeto op recém-alocado com seu tipo e referência inicial. Retorna o objeto inicializado. Se o type indica que o objeto participa no detector de lixo cíclico ele é adicionado ao grupo do detector de objetos observados. 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. Part of the Stable ABI.

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

TYPE *PyObject_New(TYPE, PyTypeObject *type)
Retorna valor: Nova referência.

Allocate a new Python object using the C structure type TYPE and the Python type object type. 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 the tp_basicsize field of the type object.

TYPE *PyObject_NewVar(TYPE, PyTypeObject *type, Py_ssize_t size)
Retorna valor: Nova referência.

Aloca um novo objeto Python usando o tipo de estrutura do C TYPE e o objeto Python do tipo type. 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 do tamanho dado pelo campo tp_itemsize do tipo type. 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.

void PyObject_Del(void *op)

Libera memória alocada a um objeto usando PyObject_New() ou PyObject_NewVar(). Isto é normalmente chamado pelo tp_dealloc manipulador especificado no tipo do objeto. Os campos do objeto não devem ser acessados após esta chamada como a memória não é mais um objeto Python válido.

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

PyModule_Create()

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