Intermédiaire
🧠 Fondamentaux
20 XP
0 personnes ont réussi
__eq__ et __lt__
Par défaut, deux objets Python ne sont egaux que s'ils sont le meme objet en mémoire. Pour comparer leur contenu, il faut definir __eq__ (egalite) et __lt__ (inferieur a).
C'est comme comparer deux cartes d'identite : par défaut Python regarde si c'est le meme bout de papier. Avec __eq__, tu lui dis de comparer les informations ecrites dessus.
__eq__ est appele quand tu utilises == __lt__ est appele quand tu utilises <
Crée une classe Note(valeur) ou valeur est entre 0 et 20, avec : __eq__ : deux notes sont egales si meme valeur __lt__ : une note est inferieure si sa valeur est plus petite mention() : retourne 'TB' (>=16), 'B' (>=14), 'AB' (>=12), 'P' (>=10), 'E' (<10)
Exemple : Note(15) == Note(15) renvoie True Note(18).mention() renvoie 'TB'
Tests (3/4)
Égalité
assert Note(15) == Note(15)
Inférieur
assert Note(10) < Note(15)
Mention TB
assert Note(18).mention() == 'TB'
+ 0 tests cachés
Indices (3 disponibles)
Solution officielle
class Note:
def __init__(self, valeur):
self.valeur = valeur
def __eq__(self, other):
return self.valeur == other.valeur
def __lt__(self, other):
return self.valeur < other.valeur
def mention(self):
if self.valeur >= 16: return 'TB'
if self.valeur >= 14: return 'B'
if self.valeur >= 12: return 'AB'
if self.valeur >= 10: return 'P'
return 'E'