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?
The following is the Mailbox class that was imported
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).
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 34 35 36 37 38 39 |
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' ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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).
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 34 35 36 37 38 39 40 41 42 |
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' ) |