Метод родительского класса не возвращает значение в дочернем. Функция Super(). Делегирование
Мне нужно реализовать делегирование - передав параметры дочернему классу В, возвратить значение из родительского класса А. Я вижу, что делегирование работает с print(), но, возвращаемое значение, запрашиваемое у А, почему-то None.
class A:
def func(self, one, two):
print("Work!")
return one + two
class B(A):
def func(self, one, two):
super(B, self).func(one, two)
a = A()
print(a.func(10,20))# >>> возвращает Work! и 30
b = B()
print(b.func(10,20))# >>> возвращает Work! и None
Ответы (1 шт):
Автор решения: Pigeoncatcher
→ Ссылка
Проблема в вашем коде заключается в том, что в методе B.func вы вызываете super().func, но не возвращаете результат этого вызова. Поскольку метод func в классе B не имеет оператора return, по умолчанию он возвращает None.
Чтобы решить эту проблему, вам нужно вернуть результат вызова super().func в методе B.func. Вы можете сделать это, используя ключевое слово return, например:
class A:
def func(self, one, two):
print("Work!")
return one + two
class B(A):
def func(self, one, two):
return super(B, self).func(one, two)