title: AttributeError: tuple object has no attribute read_note()
body: <p>OK So I have created 2 classes called Note and Notebook. </p>
  
  <pre><code>class Note:
      """ A Note """
  
      note_number = 1
  
      def __init__(self, memo="", id=""):
          """ initial attributes of the note"""
          self.memo = memo
          self.id = Note.note_number
          Note.note_number += 1
  
      def read_note(self):
          print(self.memo)
  
  
  class NoteBook:
      """The Notebook"""
  
      def __init__(self):
          self.note_book = []
  
      def add_notes(self, *args):
          for note in enumerate(args):
              self.note_book.append(note)
  
      def show_notes(self):
          for note in self.note_book:
              note.read_note()
  
  
  n1 = Note("First note")
  n2 = Note("Second note")
  n3 = Note("Third note")
  
  notebook1 = NoteBook()
  notebook1.add_notes(n1, n2, n3)
  notebook1.show_notes()
  
  Traceback (most recent call last):
    File "C:/Users/Alan/Python3/Random stuff/notebook revisions.py", line 47, in &lt;module&gt;
      notebook1.show_notes()
    File "C:/Users/Alan/Python3/Random stuff/notebook revisions.py", line 38, in show_notes
      note.read_note()
  AttributeError: 'tuple' object has no attribute 'read_note'
  </code></pre>
  
  <p>How come I get an attribute error? I want my show_notes() method to read all the notes in the notebook1 list. </p>
  
  <p>Also if I print the following statement my result is the cryptic message:</p>
  
  <pre><code>print(notebook1.note_book[0])
  
  
  (0, &lt;__main__.Note object at 0x00863F30&gt;)
  </code></pre>
  
  <p>How would I solve this problem to not produce the weird cryptic message and to print the strings "First note", "Second note" and "Third note".</p>