I have the below piece of code that creates a note and adds to a notebook.
My question is more related to the global variable last_id. When I declare it as class variable i.e. inside Class Note, I get the following error but when I declare outside the class, my code works fine.
Here are my clarifications:
- Why does not it accept the class variable.
- Why do I need to defined last_id, when I declare it as a global variable inside my function?
Error:
C:Python27BasicsOOPformytesting>python notebook.py Traceback (most recent call last): File "notebook.py", line 38, in <module> firstnote = Note( This is my first memo , example ) File "notebook.py", line 10, in __init__ last_id += 1 NameError: global name last_id is not defined
code.py
import datetime last_id = 0 class Note: def __init__(self, memo, tags): self.memo = memo self.tags = tags self.creation_date = datetime.date.today() global last_id last_id += 1 self.id = last_id #global last_id #last_id += 1 #self.id = last_id def __str__(self): return Memo={0}, Tag={1}, id={2} .format(self.memo, self.tags,self.id) class NoteBook: def __init__(self): self.notes = [] def add_note(self,memo,tags): self.notes.append(Note(memo,tags)) def __iter__(self): for note in self.notes: yield note if __name__ == "__main__": firstnote = Note( This is my first memo , example ) print(firstnote) Notes = NoteBook() print("Adding a new note object") Notes.add_note( Added thru notes , example-1 ) Notes.add_note( Added thru notes , example-2 ) for note in Notes.notes: print(note.memo,note.tags) for note in Notes: print(note) print("Adding a new note object----End")