← Python avancé
Leçon 10 / 10 — Chapitre 1: POO : les fondamentaux
Cas pratique : un catalogue de produits orienté objet
Cette dernière leçon combine attributs, méthodes, valeurs par défaut et une liste d'objets, dans un petit catalogue.
class Produit:
def __init__(self, nom: str, prix: float, stock: int = 0):
self.nom = nom
self.prix = prix
self.stock = stock
def valeur_stock(self) -> float:
return self.prix * self.stock
def vendre(self, quantite: int) -> None:
if quantite > self.stock:
raise ValueError(f"Stock insuffisant pour {self.nom}")
self.stock = self.stock - quantite
def resume(self) -> str:
return f"{self.nom:<10}{self.valeur_stock():>8.2f} $"
catalogue = [
Produit("riz", 5, 20),
Produit("huile", 8, 10),
Produit("sucre", 3),
]
catalogue[0].vendre(5)
for produit in catalogue:
print(produit.resume())
valeur_totale = sum(p.valeur_stock() for p in catalogue)
print(f"Total : {valeur_totale:.2f} $")
Ce que fait chaque partie :
Produit("sucre", 3)utilise la valeur par défautstock=0(vue dans ce chapitre), sans troisième argument.catalogue[0].vendre(5)modifie le stock de riz via la méthode dédiée, qui vérifie la quantité disponible avant d'agir.resume()(vue dans ce chapitre) réutiliseself.valeur_stock(), et applique le formatage en colonnes déjà vu dans Python Intermédiaire.- L'expression génératrice
sum(p.valeur_stock() for p in catalogue)calcule le total sans construire de liste intermédiaire.
Après la vente, riz passe de 20 à 15 unités (valeur 75 $), huile reste à 80 $, sucre à 0 $ (stock nul) : le total affiché est 155.00 $.
À vous de jouer : ajoutez un quatrième produit au catalogue, vendez-en une partie, et vérifiez que le total affiché change en conséquence.
🔒
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