Comment déterminer le type d'un objet en Python ?

Une fonction permet de retourner le type d'un objet. Elle gère tous les types de base du langage mais aussi les types personnalisés.

Le langage Python est un langage typé dynamiquement : les variables ne sont pas typées à l'avance, leur type est défini en fonction de la valeur qu'elles contiennent. Il est possible de déterminer le type d'un objet grâce à deux fonctions différentes. Bien qu'elles aient un fonctionnement similaire pour les types de base, elles diffèrent dans la gestion des types personnalisés.

La fonction type() retourne le type d'un objet. Elle gère tous les types de base du langage Python mais également les types personnalisés que vous avez créés dans votre programme.

>>> type(1)
<type 'int'>
>>> type(Coucou)
<type 'str'>
>>> type({})
<type 'dict'>
>>> type([])
<type 'list'>

La fonction isinstance() fonctionne différemment. Elle prend en premier argument la variable et en deuxième argument le type à tester et retourne true si la variable est bien de ce type. Il est possible de faire la même chose avec le mot-clé is et la fonction type. La fonction isinstance() accepte également en deuxième argument un tuple de type et retourne true si la variable appartient à l'un des types.

>>> isinstance(1, int)
true
>>> type(1) is int
true
>>> isinstance(Coucou, (int, str))
True

La différence entre ces deux fonctions est dans la gestion de l'héritage pour les types personnalisés. La fonction type() ne considère que le type immédiat de l'objet alors que la fonction isinstance() prend en compte l'héritage.

>>> class maClasse (object):
 pass
>>> class maClasseEnfant (maClasse):
 pass
>>> objet1 = maClasse();
>>> objet2 = maClasseEnfant();
>>> type(objet1) is maClasse
true
>>> type(objet2) is maClasse
false
>>> isintance(objet1, maClasse)
true
>>> isintance(objet2, maClasse)
True

Python