Alocando Objetos na Pilha¶
-
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.
Inicializa um objeto op recém-alocado com seu tipo e sua referência inicial. Retorna o objeto inicializado. Se type indicar no detector de lixo cíclico que o objeto participa, 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)¶ - Return value: Borrowed reference.
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)¶ - Return value: New reference.
Aloca um novo objeto Python usando o tipo de estrutura C TYPE e o tipo de objeto Python type. Campos não definidos no cabeçalho do objeto Python não são inicializados; a contagem de referências do objeto será um deles. O tamanho da alocação de memória é determinado do campo
tp_basicsize
do objeto tipo.
-
TYPE*
PyObject_NewVar
(TYPE, PyTypeObject *type, Py_ssize_t size)¶ - Return value: New reference.
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()
ouPyObject_NewVar()
. Isto é normalmente chamado pelotp_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 macroPy_None
, o qual avalia como um ponteiro para este objeto.
Ver também
PyModule_Create()
Para alocar e criar módulos de extensão.