Exercices Projets guidés E-commerce #8 : Panier avec context manager
🎉

Bravo!

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

E-commerce #8 : Panier avec context manager

On peut transformer le Panier en context manager pour gerer une session d'achat. L'idee : quand on entre dans le bloc with, le panier est vide (nouvelle session). Si une erreur se produit pendant la session, le panier est annule (vide a nouveau). Si tout se passe bien, le panier est conserve.

C'est comme une transaction en base de données : soit tout passe, soit on annule tout.

Crée les méthodes __enter__ et __exit__ sur la classe Panier :
- __enter__ : vide le panier (self.items = {}) et retourne self
- __exit__ : si une exception s'est produite (exc_type n'est pas None), vide le panier. Retourne False pour laisser les exceptions se propager.

Exemple :
with Panier() as panier:
panier.ajouter(produit)
# Si exception ici : panier vide
# Sinon : panier conserve

Tests (2/4)

Entrée dans le with
from decimal import Decimal
p = Produit('A', Decimal('10'))
pan = Panier()
pan.ajouter(p)
with pan as p2:
    assert len(p2.items) == 0
Panier conserve sans erreur
from decimal import Decimal
prod = Produit('B', Decimal('5'))
with Panier() as pan:
    pan.ajouter(prod, 2)
assert len(pan.items) == 1

+ 0 tests cachés

Indices (3 disponibles)

solution.py