Aug-04-2017, 10:15 PM
(This post was last modified: Aug-04-2017, 11:02 PM by pythonnewb.)
I have 2 classes imported onto my demo file but when I try to print my list a name error pops up, when I already defined the empty list 'mailbox_list' on line 33. What am I doing wrong?
Here is the Message class
I made some modifications that allows the program to execute, however, I need to be using the objects created from the 2 classes. It only executes if I don't use the objects. The multilne comments are what I originally had (uses the object to modify list).
from message import Message from mailbox import Mailbox # create objects from Message class msg1=Message('Kim', 'Samuel', 'Please depart promptly.') msg2=Message('Susan', 'Annie', 'Pick up your things') msg3=Message('Rudolf Reindeer', 'Frosty Snowman', 'Christmas is coming!') msg4=Message('Bob', 'Tom', 'Bob the Builder reruns') # append additional lines msg1.append("You don't want to be late") msg2.append('You left your backpack and textbooks') msg3.append('I am very excited.') msg4.append('are very entertaining') # create message strings mail1=msg1.toString(msg1.sender,msg1.recipient,msg1.message) mail2=msg2.toString(msg2.sender,msg1.recipient,msg2.message) mail3=msg3.toString(msg3.sender,msg3.recipient,msg3.message) mail4=msg4.toString(msg4.sender,msg4.recipient,msg4.message) # create object from Mailbox class inbox=Mailbox() # inbox as list to store messages mailbox_list=[] # use addMessage method to add to list inbox.addMessage(mail1) inbox.addMessage(mail2) inbox.addMessage(mail3) inbox.addMessage(mail4) # remove messages inbox.removeMessage(mailbox_list[0]) # display emails for item in mailbox_list: print(item+'\n')The following is the Mailbox class that was imported
from message import Message # Mailbox class class Mailbox: # create messages list mailbox_list=[] # method that adds message def addMessage(self, message): mailbox_list.append(message) # method that gets message def getMessage(self, index): mailbox_list[index].toString() # method that deletes messages def removeMessage(self,message): mailbox_list.remove(message)
Here is the Message class
class Message: # initialze attirubtes def __init__(self, sender, recipient, message): self.sender = sender self.recipient = recipient self.message = message # set sender and recipient def set_sender(self,sender): self.sender = sender def set_recipient(self, recipient): self.recipient = recipient # method that appends text to message def append(self, text): text = '\n' + text self.message += text return self.message # method that strings entire message def toString(self, sender, recipient, message): self.msgStr='From: ' + self.sender + '\nTo: ' + self.recipient + '\n' + self.message return self.msgStr
I made some modifications that allows the program to execute, however, I need to be using the objects created from the 2 classes. It only executes if I don't use the objects. The multilne comments are what I originally had (uses the object to modify list).
from message import Message from mailbox import Mailbox # create objects from Message class msg1=Message('Kim', 'Samuel', 'Please depart promptly.') msg2=Message('Susan', 'Annie', 'Pick up your things') msg3=Message('Rudolf Reindeer', 'Frosty Snowman', 'Christmas is coming!') msg4=Message('Bob', 'Tom', 'Bob the Builder reruns') # append additional lines msg1.append("You don't want to be late") msg2.append('You left your backpack and textbooks') msg3.append('I am very excited.') msg4.append('are very entertaining') # create message strings mail1=msg1.toString(msg1.sender,msg1.recipient,msg1.message) mail2=msg2.toString(msg2.sender,msg1.recipient,msg2.message) mail3=msg3.toString(msg3.sender,msg3.recipient,msg3.message) mail4=msg4.toString(msg4.sender,msg4.recipient,msg4.message) # create object from Mailbox class inbox=Mailbox() # inbox as list to store messages # WITHOUT OBJECT USE mailbox_list=[mail1,mail2,mail3,mail4] '''# use addMessage method to add to list inbox.addMessage(mail1) inbox.addMessage(mail2) inbox.addMessage(mail3) inbox.addMessage(mail4)''' '''# remove messages inbox.removeMessage(mailbox_list[0])''' # WITHOUT OBJECT USE mailbox_list.remove(mailbox_list[0]) # display emails for item in mailbox_list: print(item+'\n')