Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Python Object-Oriented Python Inheritance Multiple Superclasses

Need help understanding the use of the super() function

From the previous Videos I've watched, I understood that the super function is used to either:

  1. extend functionality from the inherited super/parent classes without having to implement the same code again.
  2. to enable multiple inheritance.

In the attributes.py file, kenneth implements the super() function in both the Sneaky and Agile class. I don't understand why he does this yet both classes are not inheriting from any super class.

class Sneaky: sneaky = True

def __init__(self, sneaky=True, *args, **kwargs):
    super().__init__(*args, **kwargs).  # here
    self.sneaky = sneaky

def hide(self, light_level):
    return self.sneaky and light_level < 10

class Agile: agile = True

def __init__(self, agile=True, *args, **kwargs):
    super().__init__(*args, **kwargs)    # here
    self.agile = agile

def evade(self):
    return self.agile and random.randint(0, 1)

Could someone please explain why he does this. Thanks in advance 😊

1 Answer

Steven Parker
Steven Parker
222,336 Points

This is an example of your point #2. With multiple inheritance, instead of "super" calling a method in the parent (that would be your #1 case), it calls the method in the next class of the MRO.

This functionality is discussed in the video starting around the 2 minute mark.