Python inheritance - how to call grandparent method?

后端 未结 1 414
陌清茗
陌清茗 2021-02-11 19:10

Consider the following piece of code:

class A:
  def foo(self):
    return \"A\"

class B(A):
  def foo(self):
    return \"B\"

class C(B):
  def foo(self):
            


        
1条回答
  •  粉色の甜心
    2021-02-11 19:40

    There are two ways to go around this:

    Either you can use A.foo(self) method explicitly as the others have suggested - use this when you want to call the method of the A class with disregard as to whether A is B's parent class or not:

    class C(B):
      def foo(self):
        tmp = A.foo(self) # call A's foo and store the result to tmp
        return "C"+tmp
    

    Or, if you want to use the .foo() method of B's parent class regardless of whether the parent class is A or not, then use:

    class C(B):
      def foo(self):
        tmp = super(B, self).foo() # call B's father's foo and store the result to tmp
        return "C"+tmp
    

    0 讨论(0)
提交回复
热议问题