Avancé
🧠 Fondamentaux
30 XP
0 personnes ont réussi
Validation avec property
La vraie puissance des properties, c'est la validation. Le setter peut refuser une valeur invalide en levant une exception.
Imagine que tu remplis un formulaire en ligne : si tu mets un age de 500, le site refuse. C'est exactement ce que fait un setter avec validation.
Exemple :
class Pourcentage:
def __init__(self, valeur):
self.valeur = valeur
@property
def valeur(self):
return self._valeur
@valeur.setter
def valeur(self, v):
if not (0 <= v <= 100):
raise ValueError('Pourcentage entre 0 et 100')
self._valeur = v
p = Pourcentage(50) # OK
p = Pourcentage(150) # ValueError !
Crée une classe Etudiant(nom, note) ou note est validee : elle doit etre entre 0 et 20. Si la valeur est hors bornes, leve ValueError.
Exemple :
e = Etudiant('Alice', 15) # OK
e = Etudiant('Bob', 25) # ValueError !
e.note = -1 # ValueError !
Tests (2/4)
Note valide
e = Etudiant('Alice', 15)
assert e.note == 15
Note invalide
try:
Etudiant('Bob', 25)
assert False
except ValueError:
assert True
+ 0 tests cachés
Solution officielle
class Etudiant:
def __init__(self, nom, note):
self.nom = nom
self.note = note
@property
def note(self):
return self._note
@note.setter
def note(self, valeur):
if not (0 <= valeur <= 20):
raise ValueError(f'Note invalide: {valeur}')
self._note = valeur