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.
Syntaxe de la fonction Python type()
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 Python type() est:
type(object)
type(name, bases, dict)
Quand un seul argument est passé à la fonction type(), elle renvoie le type de l’objet. Sa valeur est la même que l’instance de variable object.__class__.
Quand trois arguments sont passés, elle renvoie un nouvel objet de type. Elle est utilisée pour créer une classe dynamiquement à la volée.
- “name” La chaîne devient le nom de la classe. C’est la même chose 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
Jetons un coup d’œil à 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'>
Remarquez 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. Extraire des détails des classes Python
Disons que nous avons les classes suivantes. Nous allons extraire 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 quelques 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 voulez vous assurer que votre fonction ne fonctionne que sur des types spécifiques d’objets, 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
# par défaut, c'est la somme
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
Source:
https://www.digitalocean.com/community/tutorials/python-type