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.

Make your mark

Join the writer's program

Are you a developer and love writing and sharing your knowledge with the world? Join our guest writing program and get paid for writing amazing technical guides. We'll get them to the right readers that will appreciate them.

Write for us
Writer of the month
Marin Bezhanov
Marin is a software engineer and architect with a broad range of experience working...
Build on top of Better Stack

Write a script, app or project on top of Better Stack and share it with the world. Make a public repository and share it with us at our email.


or submit a pull request and help us build better products for everyone.

See the full list of amazing projects on github