# Allouer des objets dans le tas

PyObject* `_PyObject_New`(PyTypeObject *type)
  Return value: New reference.

PyVarObject* `_PyObject_NewVar`(PyTypeObject *type, Py_ssize_t size)
  Return value: New reference.

  Modifié dans la version 2.5: This function used an `int` type for size. This might require changes in your code for properly supporting 64-bit systems.

void `_PyObject_Del`(PyObject *op)

PyObject* `PyObject_Init`(PyObject *op, PyTypeObject *type)
  Return value: Borrowed reference.

  Permet d’initialiser un objet op nouvellement alloué ainsi que son type et sa référence initiale. Renvoie l’objet initialisé. La présence de type indique que l’objet doit être traité par le détecteur d’ordures cycliques, il est de ce fait ajouté à l’ensemble du détecteur d’objets observés. Les autres champs de l’objet ne sont pas affectés.

PyVarObject* `PyObject_InitVar`(PyVarObject *op, PyTypeObject *type, Py_ssize_t size)
  Return value: Borrowed reference.

  Ça fait tout ce que `PyObject_Init()` fait, et il initialise également l’information de la longueur pour un objet de taille variable.

  Modifié dans la version 2.5: This function used an `int` type for size. This might require changes in your code for properly supporting 64-bit systems.

TYPE* `PyObject_New`(TYPE, PyTypeObject *type)
  Return value: New reference.

  Alloue un nouvel objet Python en utilisant le type de structure C TYPE et l’objet de type python type. Les champs non définis par l’en-tête de l’objet Python ne sont pas initialisés; le compteur de la référence objet sera un. La taille de l’allocation de la mémoire est déterminé par le champs de l’objet type `tp_basicsize`.

TYPE* `PyObject_NewVar`(TYPE, PyTypeObject *type, Py_ssize_t size)
  Return value: New reference.

  Alloue un nouvel objet Python en utilisant le type de structure C TYPE et l’objet de type Python type. Les champs non définis par l’en-tête de l’objet Python ne sont pas initialisés. La mémoire allouée est suffisante pour pour la structure TYPE plus size champs de la taille donnée par le champ de type `tp_itemsize`. C’est utile pour l’implémentation d’objets comme les tuples, qui sont capables de déterminer leur taille à la construction. Allouer les champs en même temps que l’objet diminue le nombre d’allocations, améliorant ainsi les performances.

  Modifié dans la version 2.5: This function used an `int` type for size. This might require changes in your code for properly supporting 64-bit systems.

void `PyObject_Del`(PyObject *op)

  Libère la mémoire allouée à un objet utilisant `PyObject_New()` ou `PyObject_NewVar()`. C’est normalement appelé par le gestionnaire `tp_dealloc` spécifié dans le type d’objet. Le champ de l’objet ne devrait pas être accessible après cet appel puisque la mémoire n’est plus un objet Python valide.

PyObject* `Py_InitModule`(char *name, PyMethodDef *methods)
  Return value: Borrowed reference.

  Create a new module object based on a name and table of functions, returning the new module object.

  Modifié dans la version 2.3: Older versions of Python did not support NULL as the value for the methods argument.

PyObject* `Py_InitModule3`(char *name, PyMethodDef *methods, char *doc)
  Return value: Borrowed reference.

  Create a new module object based on a name and table of functions, returning the new module object. If doc is non-NULL, it will be used to define the docstring for the module.

  Modifié dans la version 2.3: Older versions of Python did not support NULL as the value for the methods argument.

PyObject* `Py_InitModule4`(char *name, PyMethodDef *methods, char *doc, PyObject *self, int apiver)
  Return value: Borrowed reference.

  Create a new module object based on a name and table of functions, returning the new module object. If doc is non-NULL, it will be used to define the docstring for the module. If self is non-NULL, it will be passed to the functions of the module as their (otherwise NULL) first parameter. (This was added as an experimental feature, and there are no known uses in the current version of Python.) For apiver, the only value which should be passed is defined by the constant `PYTHON_API_VERSION`.

  Note

  Most uses of this function should probably be using the `Py_InitModule3()` instead; only use this if you are sure you need it.

  Modifié dans la version 2.3: Older versions of Python did not support NULL as the value for the methods argument.

PyObject `_Py_NoneStruct`

  Object which is visible in Python as `None`. This should only be accessed using the `Py_None` macro, which evaluates to a pointer to this object.