super() and type()

Rob Williscroft rtw at freenet.co.uk
Mon Nov 27 15:26:11 EST 2006


Chris Mellon wrote in
news:mailman.777.1164653627.32031.python-list at python.org in
comp.lang.python: 

> I see super documented, and in use, as below (from the Python
> documentation) 
> 
> class C(B):
>     def meth(self, arg):
>         super(C, self).meth(arg)
> 
> I'd like to not write C all the time, so is there any problem with
> writing: 
> 
> class C(B):
>     def meth(self, arg):
>         super(type(self), self).meth(arg)
> 
> 
> This seems to work in practice but I don't see it used anywhere and
> I'm worried what I might be missing.

Have you considered what happens if somebody writes:

class D(C):
  def meth(self, arg):
    super( D, self ).meth( arg )

> 
> This was especially brought to my attention because pylint flags the
> second usage as invalid, and I'm not sure if it should be considered a
> false positive or not.

Nope, the type argument to super tells it where you are in the 
type hierarchy, type(self) is always the top of the hierarchy.

Rob.
-- 
http://www.victim-prime.dsl.pipex.com/



More information about the Python-list mailing list