PaliSkill
Python avancé

Leçon 8 / 10 — Chapitre 9: Mise en pratique : gestionnaire de tâches

Sauvegarder et charger les tâches en JSON

Huitième étape : persister les tâches entre deux exécutions du programme, avec json (vu dans Python Intermédiaire) — une @dataclass (vue au troisième chapitre) ne se convertit pas directement en JSON, il faut d'abord la transformer en dictionnaire.

import json
from dataclasses import dataclass, asdict

@dataclass
class Tache:
    titre: str
    priorite: int = 2
    terminee: bool = False

class GestionnaireTaches:
    def __init__(self):
        self.taches = []

    def sauvegarder(self, chemin="taches.json"):
        with open(chemin, "w") as fichier:
            json.dump([asdict(t) for t in self.taches], fichier)

    def charger(self, chemin="taches.json"):
        with open(chemin) as fichier:
            self.taches = [Tache(**d) for d in json.load(fichier)]

g = GestionnaireTaches()
g.taches.append(Tache("Ecrire le rapport", priorite=1))
g.sauvegarder()

g2 = GestionnaireTaches()
g2.charger()
print(g2.taches[0])

asdict(t) (du module dataclasses) convertit une @dataclass en dictionnaire normal, exploitable directement par json.dump() (vu dans Python Intermédiaire). Au chargement, Tache(**d) (déballage vu au quatrième chapitre) reconstruit chaque Tache à partir de son dictionnaire — les clés du dictionnaire doivent correspondre exactement aux attributs déclarés dans @dataclass.

Ce code affiche Tache(titre='Ecrire le rapport', priorite=1, terminee=False) : g2, un gestionnaire totalement séparé de g, retrouve bien la tâche sauvegardée par g, via le fichier taches.json.

À vous de jouer : sauvegardez un gestionnaire avec deux tâches, créez un nouveau gestionnaire vide, chargez le fichier, et vérifiez que les deux tâches sont bien récupérées.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 87 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès