TypeError: __init__() takes exactly 8 arguments (7 given) Python Homework
<p>I can't figure out why I am getting the TypeError. Below is a class and two sub-classes. The first two work fine. The Final sub-class(OperatingSys) is where I am finding difficulty. I have put my Error input at the very bottom. Thanks in advance! </p>

<pre><code>class InventoryItem(object):
    def __init__(self, title, description, price, store_id):
       self.title = title
       self.description = description
       self.price = price
       self.store_id = store_id

    def __str__(self):
        return self.title

    def __eq__(self, other):
        if self.store_id == other.title:
            return True
        else:
            return False

    def change_description(self, description=""):
        if not description:
            description = raw_input("Please give me a description:")
        self.description = description

    def change_price(self, price = -1):
        while price &lt; 0:
            price = raw_input("Please give me the new price [X.XX]: ")
            try:
                price = float(price)
                break
            except:
                print "I'm sorry but {} isn't valid.".format(price)
        self.price = price

    def change_title(self, title=""):
        if not title:
            title = raw_input("Please give me a new title: ")
        self.title = title

class Book(InventoryItem):
def __init__(self, title, description, price, format, author, store_id):
    super(Book, self).__init__(title=title,
                               description = description,
                               price = price,
                               store_id=store_id)
    self.format = format
    self.author = author

def __str__(self):
    book_line = "{title} by {author}".format(title = self.title, author = self.author)
    return book_line

def __eq__(self, other):
    if self.title == other.title and self.author == other.author:
        return True
    else:
        return False

def change_format(self, format):
    if not format:
        format = raw_input("Please give me the new format: ")
    self.format = format

def change_author(self, author):
    if not author:
        author = raw_input("Please give me the enw author: ")

class OperatingSys(InventoryItem):
def __init__(self, InventoryItem, title, price, description, opsys, rating, store_id):
    super(OperatingSys, self).__init__(title=title, price=price, description=description, store_id=store_id)
    self.opsys = opsys
    self.rating = rating

def __str__(self):
    opsys_line = "{title} for {OpSys}, price is {price}".format(title = self.title, OpSys=self.OpSys, price = self.price)
    return opsys_line

def __eq__(self, other):
    if self.title == other.title and self.author == other.author:
        return True
    else:
        return False

def change_opsys(self, opsys):
    if not opsys:
        opsys = raw_input("Please give me a new Operating System: ")
    self.opsys = opsys

def change_rating(self, rating):
    if not rating:
        rating = raw_input("Plese assign the appropriate rating: ")
    self.rating = rating



 TheDivision = OperatingSys(title="The Division",description="third person shooter", price=69.99, opsys="", rating="", store_id=3908657)
</code></pre>

<hr>

<pre><code>Traceback (most recent call last):
  File "&lt;pyshell#128&gt;", line 1, in &lt;module&gt;
    TheDivision = OperatingSys(title="The Division",description="third person shooter", price=69.99, opsys="", rating="", store_id=3908657)
TypeError: __init__() takes exactly 8 arguments (7 given)
</code></pre>

<p>When you try and create <code>OperatingSys</code> you are passing in 6 parameters â which together with <code>self</code> make 7:</p>

<pre><code>OperatingSys(
    title="The Division",                 # 1
    description="third person shooter",   # 2
    price=69.99,                          # 3 
    opsys="",                             # 4
    rating="",                            # 5
    store_id=3908657                      # 6
)
</code></pre>

<p>But your definition requires 7 (8 including <code>self</code>):</p>

<pre><code>def __init__(self, InventoryItem, title, price, description, opsys, rating, store_id):
</code></pre>

<p>I suspect that the <code>InventoryItem</code> there is a mistake â you don't need to include the parent class as a parameter in the init definition.</p>

<pre><code>def __init__(self, title, price, description, opsys, rating, store_id):
</code></pre>

python typeerror