Метод родительского класса не возвращает значение в дочернем. Функция 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)
→ Ссылка