Почему в классе родителе надо использовать метод super?

Почему так происходит, что если убрать super().__init__() в классе Employee, то MixinLog не сработает?

from abc import abstractmethod, ABC


class Employee(ABC):
    def __init__(self, name, surname, pay):
        print("Добавлен сотрудник")
        self.name = name
        self.surname = surname
        self.pay = pay
        super().__init__()


class MixinLog:
    ID = 0

    def __init__(self):
        MixinLog.ID += 1
        print(f'Добавлен сотрудник с номером: {self.ID}')


class Developer(Employee, MixinLog):
    def __init__(self, name, surname, pay, prog_lang):
        print('Добавлен разработчик')
        super().__init__(name, surname, pay)
        self.prog_lang = prog_lang


dev = Developer('Ivan', 'Ivanov', 100000, 'Python')
print(dev.__dict__)
print(Developer.__mro__)


Ответы (1 шт):

Автор решения: Dark Space

super() позволяет вызывать методы родительского класса.
Когда вы внутри Developer пишитеsuper().__init__() , вы вызываете инит родителя и тем самым выполняете код родительского __init__.

Если его убрать, получается, что нет больше причин для срабатывания __init__ класса MixinLog

→ Ссылка