Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python super(Class, self).method vs super(Parent, self).method

This question is derive from the following question, let's say class B extends class A

class A(object):
  def do_work(self):
    print 123

class B(A):
  def do_work(self):
    super(B,self).do_work() # versus the next statement
    super(A,self).do_work() # what's the difference?
like image 514
James Lin Avatar asked Feb 07 '13 04:02

James Lin


1 Answers

super(B,self).do_work()

will call the do_work function as seen by the parent class of B - that is, A.do_work.


super(A,self).do_work()

will call the do_work function as seen by the parent class of A - that is, object.do_work (which probably doesn't exist, and thus would likely raise an exception).

like image 63
Amber Avatar answered Nov 13 '22 21:11

Amber