title: Printing instances of class through inherited method
body: <p>I am trying to do some simple stuff with OOP and Python, building some simple books service. I am trying to create class for Books, where each object will be a Book with attributes, that works, it is not the best, but good enough for now.</p>
  <pre class="lang-py prettyprint-override"><code># Definition of class
  class Books(object):
  
      book_id = &quot;&quot;
      book_title = &quot;&quot;
      book_author = &quot;&quot;
      book_year = &quot;&quot;
      book_pub = &quot;&quot;
      book_ac = &quot;&quot;
      book_date = &quot;&quot;
      Books = [book_id, book_title, book_author,
               book_year, book_pub, book_ac, book_date]
  
      # Set constructor
      def __init__(self, book_id, book_title, book_author, book_year, book_pub, book_ac, book_date):
          self.book_id = book_id
          self.book_title = book_title
          self.book_author = book_author
          self.book_year = book_year
          self.book_pub = book_pub
          self.book_ac = book_ac
          self.book_date = book_date
  
      # Set attributes
      def set_book_id(self, book_id):
          self.book_id = book_id
  
      def set_book_title(self, book_title):
          self.book_title = book_title
  
      def set_book_author(self, book_author):
          self.book_author = book_author
  
      def set_book_year(self, book_year):
          self.book_year = book_year
  
      def set_book_pub(self, book_pub):
          self.book_pub = book_pub
  
      def set_book_ac(self, book_ac):
          self.book_ac = book_ac
  
      def set_book_date(self, book_date):
          self.book_date = book_date
  
      # Show attributes
      def show_book_id(self):
          print(self.book_id)
  
      def show_book_title(self):
          print(self.book_title)
  
      def show_book_author(self):
          print(self.book_author)
  
      def show_book_year(self):
          print(self.book_year)
  
      def show_book_pub(self):
          print(self.book_pub)
  
      def show_book_ac(self):
          print(self.book_ac)
  
      def show_book_date(self):
          print(self.book_date)
  
      # Show book
      def show_book(self):
          print(self.book_id)
          print(self.book_title)
          print(self.book_author)
          print(self.book_year)
          print(self.book_pub)
          print(self.book_ac)
          print(self.book_date)
  </code></pre>
  <p>Second Class is Booklist, which should hold the books inside and manage books inside, I am trying to create some basic methods as to create objects in Booklist automatically as I create Books object(this should work). Then I would like to operate with Booklist as with inherited methods from Books class to show the Books or etc.</p>
  <pre class="lang-py prettyprint-override"><code># Definition of class
  
  
  class BookList(Books):
  
      listbook = []
  
      # Set constructor
      def __init__(self):
          self.listbook = []
  
      # Add book
      def add_book(self, Books):
          return self.listbook.append(Books)
  
      # Show book
      def show_books(self):
          for b in self.listbook:
              super().show_book(self)
  
      # Search book
      def search_book_by_id(self):
          self.listbook = []
          for Books in self.book_id:
              if Books.book_id == id:
                  id.append(Books)
          return id
  </code></pre>
  <p>Bellow are my tests, as I am still fighting with error like issues of parsing arguments-Expected one or more arguments from would anyone help here what would be the easiest please to use inherited method or to manipulate with inheritance for this use case please? Thank you</p>
  <pre class="lang-py prettyprint-override"><code># Books defining
  book1 = Books('1504234', 'Murders', 'Peter Jacob',
                '2015', 'Ikaro', '5', '25.5.2015')
  book2 = Books('1504231', 'Murders', 'Peter Jacob',
                '2015', 'Ikaro', '5', '25.5.2015')
  book3 = Books('1504232', 'Hiden language', 'Samuel Fellow',
                '2005', 'Parik', '3', '21.4.2006')
  book4 = Books('1504233', 'Saturday', 'Filp Sapko',
                '2012', 'Satik', '4', '25.3.2012')
  
  book1.show_book()
  book1.set_book_title('New Murders')
  book1.show_book()
  book1.show_book_ac()
  
  print(&quot;Booklist ******************************&quot;)
  BookList.listbook.append(book1)
  BookList.listbook.append(book2)
  BookList.listbook.append(book3)
  BookList.listbook.append(book4)
  </code></pre>
  <p>(Until here it works)Now the issue begins:</p>
  <pre><code> BookList.show_books()ERROR:
      TypeError: show_books() missing 1 required positional argument: 'self'
  </code></pre>
  <p>Would anyone please tell me what I am doing wrong here?
  Thank you very much!
  Best Regards</p>