Why does super take a class name as the argument?
dataangel
k04jg02 at kzoo.edu
Fri Oct 15 19:36:13 EDT 2004
Leif K-Brooks wrote:
> 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.
What's the going argument against it? Makes sense to me.
More information about the Python-list
mailing list