Class Python 中的继承、超方法和重写方法

Class inheritance in Python, super and overridden methods

考虑以下代码:

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)。更直接地说:我希望 child class 中 bar() 的调用使用 A 中给出的 foo 的定义,即使被覆盖也是如此。我该怎么做?

我相信这就是您要找的:

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)