Understanding Python super() with init() methods

Better Stack Team
Updated on January 26, 2023

The super() function is used to call a method from a parent class. When used with the __init__ method, it allows you to initialize the attributes of the parent class, in addition to any attributes defined in the child class.

For example, if you have a parent class Person with an __init__ method that sets the name attribute, and a child class Student that inherits from Person and has its own __init__ method that sets the student_id attribute, you can use super() to call the __init__ method of the parent class and set the name attribute while also setting the student_id attribute in the child class:

class Person:
    def __init__(self, name):
        self.name = name

class Student(Person):
    def __init__(self, name, student_id):
        self.student_id = student_id

When you create a new Student object, the __init__ method of the parent class Person is called first to set the name attribute, and then the __init__ method of the child class Student is called to set the student_id attribute.

It is important to note that the super() call must be made after any attribute assignments in the child class, so that the attributes from the parent class are initialized before the child class modifies them.

Got an article suggestion? Let us know
Explore more
Licensed under CC-BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

We are hiring.

Software is our way of making the world a tiny bit better. We build tools for the makers of tomorrow.

Explore all positions →