Python Tutorial: Understanding the Super Function 🎯

beginner
19 min

Python Tutorial: Understanding the Super Function 🎯

Welcome to our deep dive into the super function in Python! This function is a powerful tool for working with inheritance and complex class hierarchies. Let's get started! 🚀

What is the super function? 📝

In simple terms, the super function allows a subclass to call a method from its parent class. It's like saying "Hey, I'm a subclass, but I need to use this method from my parent class."

Why do we need the super function? 🤔

When you have a class hierarchy, methods in a parent class may be overridden in child classes. The super function helps us to call the original method from the parent class, even if it has been overridden in a child class.

How to use the super function? 💡

Using the super function is quite straightforward:

python
class Parent: def parent_method(self): print("Parent method called.") class Child(Parent): def child_method(self): print("Child method called.") super().parent_method() child = Child() child.child_method() # Output: Child method called. Parent method called.

In this example, we have a Parent class with a parent_method, and a Child class that inherits from Parent. The Child class has a new method, child_method, which first prints "Child method called." and then calls the parent_method using super().

Working with multiple inheritance 📝

When a class inherits from multiple parent classes, the super() function can still be used to call methods from specific parents. The rule is:

  • If no parents are specified, the first parent in the MRO (Method Resolution Order) is used.
  • If a parent is specified, the method is called from that specific parent.
python
class Grandparent: def grandparent_method(self): print("Grandparent method called.") class Parent1(Grandparent): def parent1_method(self): print("Parent1 method called.") class Parent2: def parent2_method(self): print("Parent2 method called.") class Child(Parent1, Parent2): def child_method(self): super().parent1_method() super(Child, Parent2).parent2_method() child = Child() child.child_method() # Output: Parent1 method called. Parent2 method called.

In this example, we have multiple inheritance with three classes: Grandparent, Parent1, Parent2, and Child. The Child class uses the super() function to call methods from both parents.

Quiz Time 🎲

Quick Quiz
Question 1 of 1

Which of the following is a correct way to call the `parent_method` from the `Child` class in the example above?

Recap ✅

In this lesson, we've learned about the super function in Python, which is a handy tool for calling methods from parent classes when working with inheritance. We've seen how to use it in simple and multiple inheritance scenarios, and we've had a quick quiz to reinforce our learning.

With this foundation, you're ready to tackle more complex class hierarchies and write more robust code! 🎉

Happy coding! 💻🐍