Bonsoir Jean Claude,
Voici mes remarques:

-  "classe affichant une durée"
Non, cette class n'affiche aucune durée. Elle définit deux méthodes, sans compter celle pour son initialisation:
- la méthode "add" pour mettre à jour la durée,
- laméthode "str" pour formatter la durée pour une éventuelle impression.

Rien à dire pour la méthode "__init__"
La méthode "__add__" est faite pour mettre à jour la durée , c'est à dire "self" et non pas pour retourner une autre durée.
Je l'écrirai comme ceci:
 def __add__(self, objet_a_ajouter):
  self.sec+=objet_a_ajouter
  if self.sec >= 60:
   self.min+=self.sec//60
   self.sec=self.sec%60

Rien à dire pour la méthode "__str__".

Enfin, pour mettre en oeuvre tout cela, j'écrirai:

d1=Duree(3,5)
# mise à jour de la durée
d1.__add__(57)
# impression de la durée
print"durée %s" % d1

Amitiés.
Paul.

Le 11/03/2013 15:05, Jean-Claude Armingaud a écrit :
Salut tous,

un petit souci pour additionner deux temps, en utilisant la méthode __add__
si on veut bien me débrouiller le truc, ça m'intéresse.
d'avance, merci.
il faut bien sûr renommer en .py.
J.-C.

# -*- coding: Latin-1 -*-

import os
class Duree:
 "classe affichant une durée"
 def __init__(self,min=0,sec=0):
  self.min = min
  self.sec = sec
 def __add__(self, objet_a_ajouter):
  self.sec+=objet_a_ajouter
  if self.sec >= 60:
   self.min+=self.sec//60
   self.sec=self.sec%60


 def __str__(self):
  return "{0:02}:{1:02}".format(self.min,self.sec)
  
# initialisation de la durée

d1=Duree(3,5)
# mise à jour de la durée
d1.__add__(57)
# impression de la durée
print"durée %s" % d1


os.system("pause")

Répondre à