Alocar 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.
Alterado na versão 2.5: Essa função usa um tipo
int
para size. Isto requer mudanças em seu código para suportar propriamete sistemas 64-bits.
-
PyObject*
PyObject_Init
(PyObject *op, PyTypeObject *type)¶ - Return value: Borrowed reference.
Inicialize um objeto op recém alocado com seu tipo e sua referência inicial. Retorna o objeto incializado. 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.
Isso faz tudo que
PyObject_Init()
faz, e também inicializa a informação de comprimento para um objeto tamanho-de-variável.Alterado na versão 2.5: Essa função usa um tipo
int
para size. Isto requer mudanças em seu código para suportar propriamete sistemas 64-bits.
-
TYPE*
PyObject_New
(TYPE, PyTypeObject *type)¶ - Return value: New reference.
Aloque um novo objeto Python usando a estrutura C digite TYPE and the Python objet type. Campos não definidos no cabeçalho do objeto Python não são inicializados; a contagem de referência 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.
Alocar um novo objeto Python usando o tipo de estrutura C TYPE e o tipo de objeto Python 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: c: member: ~ PyTypeObject.tp_itemsize de * type *. Isto é útil para implementar objetos como tuplas, que são capazes de determinar seu tamanho em tempo de construção. Incorporando o array de campos dentro da mesma alocação diminuindo o numero de alocações, melhorando a eficiência de gerenciamento de memória.
Alterado na versão 2.5: Essa função usa um tipo
int
para size. Isto requer mudanças em seu código para suportar propriamete sistemas 64-bits.
-
void
PyObject_Del
(PyObject *op)¶ Libera memória alocada a um objeto usando
PyObject_New()
ouPyObject_NewVar()
. Isso é normalmente chamado portp_dealloc
manipulador especificado no tipo do objeto. Os campos do objeto não devem ser acessados após esta chamada, já que a memória não é mais um objeto Python válido.
-
PyObject*
Py_InitModule
(char *name, PyMethodDef *methods)¶ - Return value: Borrowed reference.
Cria um novo objeto módulo baseado em um nome e em tabela de funções, retornando o novo objeto módulo.
Alterado na versão 2.3: Versões antigas de Python não suportam NULL como valor para argumentos de method.
-
PyObject*
Py_InitModule3
(char *name, PyMethodDef *methods, char *doc)¶ - Return value: Borrowed reference.
Cria um novo objeto módulo baseado em um nome e em tabela de funções, retornando o novo objeto módulo. Se doc não é NULL, este será usado para definir a docstring para o módulo.
Alterado na versão 2.3: Versões antigas de Python não suportam NULL como valor para argumentos de method.
-
PyObject*
Py_InitModule4
(char *name, PyMethodDef *methods, char *doc, PyObject *self, int apiver)¶ - Return value: Borrowed reference.
Cria um novo objeto módulo baseado em um nome e em tabela de funções, retornando o novo módulo objeto. Se doc não é NULL, este será usado para definir a docstring para o módulo. Se self não é NULL, este será passado para as funções do módulo(também NULL), como o primeiro parâmetro delas. (Isto foi adicionado como uma característica experimental, e não há usos conhecidos na versão atual do Python.) Para apiver, o único valor que deve ser passado é definido pela constante
PYTHON_API_VERSION
.Nota
A maioria dos usos dessa função deve provavelmente usar o
Py_InitModule3()
; Apenas use isso se tiver a certeza de que precisa.Alterado na versão 2.3: Versões antigas de Python não suportam NULL como valor para argumentos de method.