Наследование классов в Python, супер и переопределенные методы - PullRequest
0 голосов
/ 26 декабря 2018

Рассмотрим следующий код:

class A:
    def foo(self, a):
        return a
    def bar(self, a):
        print(foo(a))

class B(A):
   def foo(self, a):
       return a[0]

Теперь звоним B.bar(a) результат - print(a[0]), но я хочу print(a).Более прямо: я хотел бы, чтобы при вызове bar() в дочернем классе использовалось определение foo, данное в A, даже если оно было переопределено.Как мне это сделать?

1 Ответ

0 голосов
/ 26 декабря 2018

Я считаю, что это то, что вы ищете:

class A(object):
    def foo(self, a):
        return a
    def bar(self, a):
        print(A.foo(self,a))

class B(A):
   def foo(self, a):
       return a[0]

или альтернативно:

class A:
    def foo(self, a):
        return a
    def bar(self, a):
        print(self.foo(a))

class B(A):
   def foo(self, a):
       return super().foo(a)
...