Python Object-Oriented Python Inheritance Super!

The super function

How do I override a method using the super() function? The video is kind of confusing

inventory.py
class Inventory:
    def __init__(self):
        self.slots = []

    def add_item(self, item):
        self.slots.append(item)

class SortedInventory(Inventory):
    def __init__(self,item):
        super().__init__(self,item)

4 Answers

Donatas Ramanauskas
Donatas Ramanauskas
28,538 Points

This should pass step2:

class SortedInventory(Inventory): def add_item(self,item): super().add_item(self,item)

For step 3:

class SortedInventory(Inventory): def add_item(self, item): super().add_item(item) # calls parent method and adds item self.slots.sort() # sorts items

The task does not ask to override init

Oh wow, that's very puzzling -- I have to remove self from the last line?? I thought I pass self in as a parameter. My mistake! Very difficult stuff!

class SortedInventory(Inventory):
    def add_item(self, item): 
        super().add_item(item) 
Brad Givens
Brad Givens
6,621 Points

For step 2: removed the 'self' from super().add_item(item) and it worked. Code that passed below, not 100% sure why the self is not needed when overriding using super().

Any ideas?

class Inventory: def init(self): self.slots = []

def add_item(self, item):
    self.slots.append(item)

class SortedInventory(Inventory): def add_item(self, item): super().add_item(item)

no idea myself but i really would like to know!

Donatas Ramanauskas
Donatas Ramanauskas
28,538 Points

You need to override add_item method

class Inventory: def init(self): self.slots = []

def add_item(self, item):
    self.slots.append(item)

class SortedInventory(Inventory): def add_item(self, item): super().add_item(item)

Is there not suppose to be an init function super? because the above code is not passing for some reasons

class Inventory: def init(self): self.slots = []

def add_item(self, item):
    self.slots.append(item)

class SortedInventory(Inventory): def add_item(self,item): super().add_item(self,item)