Types et conversions

Le module types fournit diverses fonctions permettant de manipuler plus facilement les différents types disponibles.

Fonctions disponibles

Le module fournit d'abord deux variables (ce serait cool si ça pouvait être des constantes, mais bon, Python ^^), iter qui correspond au type des générateurs, et classicols, qui contient les types de collections les plus courants (tuple, list, set, frozenset, ainsi que deque et Counter du module collections).

Il fournit ensuite une fonction iterable, destinée à vérifier si un objet passé en paramètre est itérable ou non. Pour cela, cette fonction teste la présente d'une méthode __iter__, ou la présence simultanée des méthodes __getitem__ et __len__ (il est techniquement possible de créer un générateur si seule la méthode __getitem__ est présente, mais celui-ci a peu de chances de fonctionner dans ce cas). Un paramètre booléen supplémentaire permet de dire si le type str doit être considéré comme itérable ou pas, un certain nombre d'usage s'appliquant à « tous les types itérables sauf les strings ».

Sur le même modèle, une fonction mapping vérifie si un type peut être considéré comme un mapping ou non, ce qui se fait en vérifiant la présence des méthodes __getitem__ et keys (ce qui semble être la condition minimale satisfaisante pour autoriser un appel de la forme « fonction(**objet) »).

La fonction throw renvoie la valeur qu'on lui passe en paramètre sans aucun changement, sauf s'il s'agit d'une exception, auquel cas elle est déclenchée (on peut ajouter au besoin différentes classes d'exceptions qui ne doivent pas être déclenchées). Cette fonction est notamment utilisée pour gérer la valeur par défaut dans les tentatives de conversion (voir ci-dessous).

La classe data est une classe prenant un nombre arbitraire de clefs/valeurs lors de son initialisation, et les affectant comme attributs à l'objet résultant. Elle peut ainsi être utilisée pour émuler rapidement un déclenchement d'événement lorsque quelques attributs seulement vont être utilisés par la méthode appelée.

La classe frozendict vise à être un équivalent non-modifiable de la classe dict, comme un tuple l'est pour une list ou un frozenset pour un set, étant donné qu'il est assez domage qu'un tel type d'objets n'existe pas nativement en Python.

Enfin, l'objet parse est un objet particulier permettant de réaliser un certain nombre de conversions, qui vise notamment à obtenir des valeurs utilisables en Python à partir de chaînes de caractères échangées entre deux programmes ou lues depuis la configuration.

On peut utiliser cet objet comme un dictionnaire, en utilisant comme clefs soit les types désirés (int, str, etc.), soit la chaîne de caractère correspondante, chacune renvoyant la fonction de conversion concernée. Il est également possible d'appeler directement l'objet parse en passant d'abord la valeur à convertir, puis le type attendu, puis les autres paramètres de conversion, ce qui facilite certains usages automatiques. Les types de base gérés directement par le module sont les suivants :

Un décorateur register permet de référencer des types fonctions de parsage vers d'autres types en cas de besoin. Typiquement, les thing et stuff de la bibliothèque correspondante, ou les couleurs de la bibliothèques d'images, peuvent également être obtenues par parse lorsque ces bibliothèques sont chargées.