Comme des milliers avant je me suis attaqué au cours de Vincent Le Goff (Un grand merci au passage).
J'en suis au chapitres des méthodes spéciales et j'ai une question sur l'exemple de redéfinition de la méthode __add__.
Il y a l'exemple suivant :
def __add__(self, objet_a_ajouter):
"""L'objet à ajouter est un entier, le nombre de secondes"""
nouvelle_duree = Duree()
# On va copier self dans l'objet créé pour avoir la même durée
nouvelle_duree.min = self.min
nouvelle_duree.sec = self.sec
# On ajoute la durée
nouvelle_duree.sec += objet_a_ajouter
# Si le nombre de secondes >= 60
if nouvelle_duree.sec >= 60:
nouvelle_duree.min += nouvelle_duree.sec // 60
nouvelle_duree.sec = nouvelle_duree.sec % 60
# On renvoie la nouvelle durée
return nouvelle_duree
Pourquoi créer un nouvel objet "nouvelle_duree" au lieu d'utilier self ?
Avec ces lignes cela fonctionne aussi :
def __add__(self, valeur):
"""Rédéfinition de la méthode spéciale "+" """
self.sec += valeur
if self.sec >= 60:
self.min += self.sec//60
self.sec = self.sec%60
return self
Pourquoi créer un nouvel objet "nouvelle_duree" au lieu d'utilier self ?
Parce-qu'on a envie de garder l'ancienne instance pouvant être utile pour d'autres éventuels calculs de dates.
L'eau-Hic a écrit:
Avec ces lignes cela fonctionne aussi :
def __add__(self, valeur):
"""Rédéfinition de la méthode spéciale "+" """
self.sec += valeur
if self.sec >= 60:
self.min += self.sec//60
self.sec = self.sec%60
return self
L'ajout provoque une mise à jour de l'objet, c'est à dire qu'on prend l'ancienne date, on y ajoute une valeur, et la date est mise à jour.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)