Exercices POO Dataclass avec __post_init__
🎉

Bravo!

Avancé 🧠 Fondamentaux 30 XP 0 personnes ont réussi

Dataclass avec __post_init__

Parfois, tu as besoin de faire quelque chose juste apres la création de l'objet : valider les données, calculer un champ derive, enregistrer l'objet quelque part. C'est le role de __post_init__.

Cette méthode est appelee automatiquement par le __init__ genere, juste apres l'initialisation des champs. C'est l'endroit ideal pour la validation.

@dataclass
class Age:
valeur: int

def __post_init__(self):
if self.valeur < 0:
raise ValueError('L age ne peut pas etre negatif')

Age(25) # OK
Age(-5) # leve ValueError

Crée une dataclass Rectangle avec largeur: float et hauteur: float.

Dans __post_init__, vérifie que largeur > 0 et hauteur > 0. Si ce n'est pas le cas, leve ValueError('Dimensions doivent etre positives').

Ajoute des propriétés (avec @property) aire et perimetre calculées.

Exemple :
r = Rectangle(4.0, 3.0)
r.aire # 12.0
r.perimetre # 14.0
Rectangle(-1, 3) # leve ValueError

Tests (3/4)

Création valide
r = Rectangle(4.0, 3.0)
assert r.aire == 12.0
Périmètre
assert Rectangle(4.0, 3.0).perimetre == 14.0
Validation négative
try:
    Rectangle(-1, 3)
    assert False
except ValueError:
    assert True

+ 0 tests cachés

Indices (3 disponibles)

solution.py