Type d'annotations et validation des données
Bonjour,
class Voiture:
def __init__(self, marque:str, prix:int):
self.marque = marque
self.prix = prix
def changer_prix(self, nouveau_prix:int) -> int:
self.prix = nouveau_prix
voiture = Voiture(marque="Mazda", prix=30000)
voiture.changer_prix(35000)
En précisant les annotations de type dans ma méthode changer_prix cela n'implique-t-il pas que le prix sera forcément un nombre ?
(Le test s'assurer que le nouveaux prix sera forcément un entier ne se valide pas.)
Bonjour, les annotations de type ne sont que des indications. Elles n'empêchent pas de passer n'importe quel type à la méthode.
Il y a la fonction isinstance() pour faire des vérifications sur le type d'un objet.
Par contre, tu as des outils comme mypy, ou alors ton éditeur de code, qui peuvent capturer l'erreur. C'est à cela que servent les annotations de type. Elles ne sont pas prévue à la base pour imposer une validation à l'exécution.
Regarde la rediffusion des derniers mentorat. Dans un de ces mentorat, celui sur les décorateurs, j'avais proposé un décorateur qui permettait de valider les types des arguments à l'exécution. Ce n'est pas nécessairement ce qu'ont cherche toutefois à obtenir systématiquement avec les annotations de type, qui doivent surtout servir à une analyse statique du code.
La session à laquelle Thierry fait référence.
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte