Почему в классе родителе надо использовать метод 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