Почему функция super().__init__() не работает так как должна
Вот мой первый код который работает правильно:
class sotrudnik:
def __init__(self, name, work=None, salary=0):
self.name=name
self.work=work
self.salary=salary
def Raise(self, x):
if type(x)==int or type(x)==float:
self.salary += self.salary * x
return self.salary
else:
raise TypeError
class manager(sotrudnik):
def Raise(self, x, y):
if type(x)==int or type(x)==float:
self.salary += self.salary * x
if self.work!=None:
self.salary += self.salary * y
return self.salary
else: return self.salary
else:
raise TypeError
s=manager(1,1,100)
print(s.Raise(0.1, 0.1))
Интерпретатор выводит: 121.0
А вот мой второй код, при обработке которого компилятор выводит None
:
class sotrudnik:
def __init__(self, name, work=None, salary=0):
self.name=name
self.work=work
self.salary=salary
def Raise(self, x):
if type(x)==int or type(x)==float:
self.salary += self.salary * x
return self.salary
else:
raise TypeError
class manager(sotrudnik):
def Raise(self, x, y):
super().__init__(x)
if self.work!=None:
self.salary += selfsalary * y
return self.salary
ivan=manager('bdfy','quya',10000)
print(ivan.Raise(0.1, 0.1))
Объясните пожалуйста, почему так
Источник: Stack Overflow на русском