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 trialMathew Yangang
4,433 PointsThe super function
How do I override a method using the super() function? The video is kind of confusing
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
28,538 PointsThis 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
Brad Givens
6,621 PointsFor 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)
Mark Chesney
11,747 Pointsno idea myself but i really would like to know!
Donatas Ramanauskas
28,538 PointsYou 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)
Mathew Yangang
4,433 PointsIs there not suppose to be an init function super? because the above code is not passing for some reasons
Mathew Yangang
4,433 Pointsclass 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)
Mark Chesney
11,747 PointsMark Chesney
11,747 PointsOh wow, that's very puzzling -- I have to remove
self
from the last line?? I thought I passself
in as a parameter. My mistake! Very difficult stuff!