Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Object-Oriented Python Inheritance Super!

Benjamin Parker
Benjamin Parker
1,752 Points

What does "override" mean in this coding challenge?

Coding challenge asks me to "override" the add_item method in my new subclass and to make sure to use super. I guess I must not understand the syntax or what override means.

Anyone know the answer/can explain it?

inventory.py
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)

1 Answer

Steven Parker
Steven Parker
231,271 Points

An "override" just means you are creating a method in the subclass that has the same name as a method in the parent class. So any reference to that name will be to your new one instead of the one in the parent class.

Then "super" gives you a way to access the one in the parent class anyway. Your code is almost correct, but when calling any method, you don't pass "self" explicitly as an argument. The system provides that for you.

        super().add_item(item)