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()
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.