Exercices Projets guidés E-commerce #10 : Catalogue avec __iter__
🎉

Bravo!

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

E-commerce #10 : Catalogue avec __iter__

Un catalogue iterable permet d'utiliser la syntaxe for produit in catalogue directement. Pour ca, il faut implémenter les méthodes speciales __iter__, __len__ et __contains__.

__iter__ retourne un iterateur. Le plus simple est de deleguer a la liste interne avec iter(self.produits).

__contains__ est appele quand tu ecris 'x in catalogue'. Sans cette méthode, Python utiliserait __iter__ pour chercher, mais c'est moins efficace.

Crée une classe Catalogue avec :
- __init__ : self.produits = []
- ajouter(produit) : ajoute au catalogue
- __iter__ : permet for p in catalogue
- __len__ : retourne le nombre de produits
- __contains__ : vérifie par nom si un produit est dans le catalogue
- filtrer(disponible=True) : retourne les produits filtres par disponibilite

Exemple :
cat = Catalogue()
cat.ajouter(Produit('Livre', 10.0, 5))
for p in cat:
print(p.nom) # 'Livre'
len(cat) # 1

Tests (2/4)

Iteration
from decimal import Decimal
c = Catalogue()
c.ajouter(Produit('A', Decimal('10'), 5))
noms = [p.nom for p in c]
assert noms == ['A']
__len__
from decimal import Decimal
c = Catalogue()
c.ajouter(Produit('A', Decimal('10'), 5))
c.ajouter(Produit('B', Decimal('5'), 0))
assert len(c) == 2

+ 0 tests cachés

Indices (3 disponibles)

solution.py