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