Fonction type() de Python [Avec des exemples faciles]
Nous utilisons la fonction type() en Python pour identifier le type d'un objet Python spécifique. C'est une fonction très simple et facile à comprendre. Sans plus tarder, entrons directement dans la syntaxe.
Syntax de la fonction type() en Python
Python a beaucoup de fonctions intégrées. La fonction type() est utilisée pour obtenir le type d'un objet.
La syntaxe de la fonction type() de Python est :
type(object)
type(name, bases, dict)
Lorsque un seul argument est passé à la fonction type(), elle retourne le type de l'objet. Sa valeur est la même que la variable d'instance object.__class__.
Lorsque trois arguments sont passés, cela renvoie un nouvel objet de type. Il est utilisé pour créer une classe dynamiquement à la volée.
- “nom ” la chaîne devient le nom de la classe. C’est le même que l’attribut __name__ d’une classe.
- “bases ” le tuple spécifie les classes de base. C’est la même chose que l'attribut __bases__ de la classe.
- “dict ” le dictionnaire aide à créer le corps de la classe. C'est la même chose que l'attribut __dict__ de la classe.
Exemples de la fonction type() en Python
Examinons quelques exemples d'utilisation de la fonction type() .
1. Trouver le type d'un objet Python
x = 10
print(type(x))
s = 'abc'
print(type(s))
from collections import OrderedDict
od = OrderedDict()
print(type(od))
class Data:
pass
d = Data()
print(type(d))
Sortie :
<class 'int'>
<class 'str'>
<class 'collections.OrderedDict'>
<class '__main__.Data'>
Notez que la fonction type() renvoie le type de l'objet avec le nom du module. Comme notre script Python n'a pas de module, son module devient __main__.
2. Extraction des détails des classes Python
Disons que nous avons les classes suivantes. Nous allons obtenir des métadonnées sur les classes en utilisant les propriétés class, bases, dict et doc.
class Data:
"""Data Class"""
d_id = 10
class SubData(Data):
"""SubData Class"""
sd_id = 20
Imprimons certaines des propriétés de ces classes.
print(Data.__class__)
print(Data.__bases__)
print(Data.__dict__)
print(Data.__doc__)
print(SubData.__class__)
print(SubData.__bases__)
print(SubData.__dict__)
print(SubData.__doc__)
Sortie :
<class 'type'>
(<class 'object'>,)
{'__module__': '__main__', '__doc__': 'Data Class', 'd_id': 10, '__dict__': <attribute '__dict__' of 'Data' objects>, '__weakref__': <attribute '__weakref__' of 'Data' objects>}
Data Class
<class 'type'>
(<class '__main__.Data'>,)
{'__module__': '__main__', '__doc__': 'SubData Class', 'sd_id': 20}
SubData Class
Nous pouvons créer des classes similaires en utilisant la fonction type().
Data1 = type('Data1', (object,), {'__doc__': 'Data1 Class', 'd_id': 10})
SubData1 = type('SubData1', (Data1,), {'__doc__': 'SubData1 Class', 'sd_id': 20})
print(Data1.__class__)
print(Data1.__bases__)
print(Data1.__dict__)
print(Data1.__doc__)
print(SubData1.__class__)
print(SubData1.__bases__)
print(SubData1.__dict__)
print(SubData1.__doc__)
Sortie :
<class 'type'>
(<class 'object'>,)
{'__doc__': 'Data1 Class', 'd_id': 10, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Data1' objects>, '__weakref__': <attribute '__weakref__' of 'Data1' objects>}
Data1 Class
<class 'type'>
(<class '__main__.Data1'>,)
{'__doc__': 'SubData1 Class', 'sd_id': 20, '__module__': '__main__'}
SubData1 Class
Notez que nous ne pouvons pas créer de fonctions dans la classe dynamique en utilisant la fonction type().
Utilisation réelle de la fonction type()
Python est un langage à typage dynamique. Donc, si nous voulons connaître le type des arguments, nous pouvons utiliser la fonction type(). Si vous souhaitez vous assurer que votre fonction ne fonctionne que sur des types d'objets spécifiques, utilisez la fonction isinstance().
Disons que nous voulons créer une fonction pour calculer quelque chose sur deux entiers. Nous pouvons l'implémenter de la manière suivante.
def calculate(x, y, op='sum'):
if not(isinstance(x, int) and isinstance(y, int)):
print(f'Invalid Types of Arguments - x:{type(x)}, y:{type(y)}')
raise TypeError('Incompatible types of arguments, must be integers')
if op == 'difference':
return x - y
if op == 'multiply':
return x * y
# default is sum
return x + y
La fonction isinstance() est utilisée pour valider le type de l'argument d'entrée. La fonction type() est utilisée pour afficher le type des paramètres lorsque la validation échoue.
Références
- documentation de l'API type()
- La fonction isinstance() de Python
- Vérification de type en Python
