# Understanding Python super() with init() methods

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:

```python
class Person:
    def __init__(self, name):
        self.name = name

class Student(Person):
    def __init__(self, name, student_id):
        super().__init__(name)
        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.