Python Object-Oriented Python Inheritance Super-Duper!

Understanding the benefits of super() overriding __init__

What functionality are we missing within the subclass that we get using the super() override of __init__

2 Answers

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 59,892 Points

Good question. But there might be some misunderstanding in how you phrased it. The function super() does not "override" the __init__(). Rather, it executes the __init__() of the parent class within the current subclass execution of __init__().

If the super() call is not included in the subclass.__init__() method, the subclass.__init__() completely overrides the parent.__init__() method preventing the parent's __init__() from executing. This can be a legitimate useage provide, there is nothing needed from the parent's initialization code.

It some cases the subclass does not need to modify the actions of the parent.__init__() at all. In this case, the subclass does not include an __init__() method. This will cause the parent's __init__() method to be called automatically.

Once the method __init__() is added to the subclass, the question becomes "Is there anything needed in the parent's __init__() method?" If yes, the a super() call is needed. The next question becomes "Does the subclass need to initial items before or after (or both) the parent's __init__() method runs?" If subclass needs to initialize items before the parent, super() is called last. If subclass needs to initialize items after the parent, super() is called first. If both, super() is called in the middle of the subclass.__init__() method code.

If you need more help, please post back. Good luck!

Gali B
Gali B
2,082 Points

Thanks for that forward answer, sir! very clear and easy to understand after I've been struggling with this quite a lot.

Jeremy Rambis
Jeremy Rambis
Pro Student 3,288 Points

Thank you for this explanation, this helped me to grasp what super() does and why it's important/useful!

This was a very good explanation. Thank you for clearing it up!

Daniel Murray
Daniel Murray
3,294 Points

Thank you Chris, this detail should be in the video or Teacher's notes.

Thomas Bynum
Thomas Bynum
4,616 Points

This made it all make sense for me. Thank you!

Elena Sefranek
Elena Sefranek
2,029 Points

Hi Chris, thank you so much for this wonderful explanation. It really made it clear why you need super() and what would happen in the various cases (with super, without, order of super etc.) . I agree with Daniel, this should be in the teacher's notes for everyone to see.

This is very good explaining