PaliSkill
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éfaut stock=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éutilise self.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