Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
E-commerce #1 : Classe Produit
On commence le projet e-commerce ! Tout part du produit. Un produit a un nom, un prix et un stock.
Pour les prix, on utilise Decimal au lieu de float. Pourquoi ? Parce que les flottants ont des problèmes de precision. Par exemple, 0.1 + 0.2 en float donne 0.30000000000000004. Avec Decimal, c'est exact.
from decimal import Decimal Decimal('29.99') # precision exacte Decimal(str(29.99)) # depuis un float, passe par str d'abord
Crée la classe Produit avec : - __init__(self, nom, prix, stock) ou prix est converti en Decimal - est_disponible() qui retourne True si stock > 0 - __repr__ qui retourne 'Produit(nom, prix euros, stock en stock)' - __eq__ : deux produits sont egaux si meme nom
Exemple : p = Produit('Livre Python', Decimal('29.99'), 10) p.est_disponible() # True p = Produit('Stylo', Decimal('2.50'), 0) p.est_disponible() # False
Tests (2/4)
Disponible
from decimal import Decimal
p = Produit('Livre', Decimal('29.99'), 10)
assert p.est_disponible() == True
Indisponible
from decimal import Decimal
p = Produit('Livre', Decimal('29.99'), 0)
assert p.est_disponible() == False
+ 0 tests cachés
Indices (3 disponibles)
Solution officielle
from decimal import Decimal
class Produit:
def __init__(self, nom, prix, stock):
self.nom = nom
self.prix = Decimal(str(prix))
self.stock = stock
def est_disponible(self):
return self.stock > 0
def __repr__(self):
return f'Produit({self.nom}, {self.prix}€, {self.stock} en stock)'
def __eq__(self, other):
if not isinstance(other, Produit):
return NotImplemented
return self.nom == other.nom