Why does super take a class name as the argument?
Leif K-Brooks
eurleif at ecritters.biz
Fri Oct 15 16:27:13 EDT 2004
Chris Green wrote:
> I've done a bit of searching in the language reference and a couple
> pages referring the behavior of super() but I can't find any
> discussion of why super needs the name of the class as an argument.
Think about it. In this code:
class A(object):
def do_stuff(self):
print "A is doing stuff now."
class B(A):
def do_stuff(self):
super(B, self).do_stuff()
print "B is doing stuff now."
class C(B):
def do_stuff(self):
super(C, self).do_stuff()
print "C is doing stuff now."
How would Python know that B should call C's do_stuff() method instead
of its own if there was no class argument? The self argument would be
exactly the same when C called super() as when B called it. There has
been some talk of making super into a language keyword instead of a
type, though; that would eliminate the need to even pass in self.
More information about the Python-list
mailing list