Création d'une classe qui fait office de boite à messages
Bonjour à tous,
Voici les consignes de l'exercice où je suis bloqué: "Créez une nouvelle classe, SMSStore. Avec cette classe vous pourrez instancier des objets SMSStore, qui peuvent stocker des messages SMS, similaire à une boîte de réception sur un téléphone:
Code:
my_inbox = SMSStore()
Ce store ou stockage peut contenir plusieurs messages SMS (son état interne sera juste une liste de messages). Chaque message sera représenté comme un tuple: (has_been_viewed, from_number, time_arrived, text_of_SMS). Une instance my_inbox de la classe SMSStore représentant une boîte de réception doit pouvoir comprendre les messages suivants:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| my_inbox.add_new_arrival(from_number, time_arrived, text_of_SMS)
# Crée un nouveau tuple SMS, ajouté après les autres
# dans le stockage. Une fois créé, son attribut
# has_been_viewed est mis à False.
my_inbox.message_count()
# Retourne le nombre de messages SMS dans my_inbox
my_inbox.get_unread_indexes()
# Retourne une list des indexes de tous les messages SMS encore non lus (not-yet-viewed)
my_inbox.get_message(i)
# Retourne (from_number, time_arrived, text_of_sms) pour le message[i]
# Change aussi son état à "has been viewed".
# S'il n'y a pas de message à la position i, retorune None
my_inbox.delete(i)
# Supprime le message SMS se trouvant à l'index i
my_inbox.clear()
# Supprime tous les messages SMS de cette boîte de réception |
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class SMSStore():
def __init__(self):
self.box=[]
def get_unread_indexes(self):
self.index=[]
for k in self.box:
if k[0] == False:
self.index.append(self.box.index(k))
return(self.index)
def clear(self):
self.box[:]=[]
def add_new_arrival(self,from_number,time_arrived,text_of_SMS):
self.text_of_SMS=text_of_SMS
self.time_arrived=time_arrived
self.from_number=from_number
self.has_been_viewed=False
self.box.append((self.has_been_viewed,self.from_number,self.time_arrived,self.text_of_SMS))
def message_count(self):
return(len(self.box))
def get_message(self,i):
if i <= (len(self.box) - 1):
self.box[i][0] = True
return(self.box[i][1:])
return(None) |
Soyez indulgent, c'est mon premier exercice sur les classes en Python ! Cela fait depuis 4H que je bloques dessus en le modifiant plusieurs fois et finalement il m'a l'air parfait actuellement mais ne compile toujours pas correctement. Pouvez-vous m'aider à réparer les erreurs code ? Dernière question, comment faites-vous quand vous êtes bloqués comme cela pour vous en sortir ? Je veux dire par là, à mes premières relectures j'ai pu identifié quelques erreurs, maintenant j'ai beau relire mon code il me parait fonctionnel...
Merci infiniment,