super, apply, or __init__ when subclassing?

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Tue Sep 18 08:50:41 EDT 2007


En Tue, 18 Sep 2007 04:33:11 -0300, exhuma.twn <exhuma at gmail.com> escribi�:

> This is something that keeps confusing me. If you read examples of
> code on the web, you keep on seeing these three calls (super, apply
> and __init__) to reference the super-class. This looks to me as it is
> somehow personal preference. But this would conflict with the "There
> one way to do it" mind-set.
>
> So, knowing that in python there is one thing to do something, these
> three different calls must *do* domething different. But what exactly
> *is* the difference?

There are a few typos in your examples. If you write them this way:

> ------------ Exampel 1: -----------------------------
>
> class B(A):
>    def __init__(self, *args):
>       A.__init__(self, *args)
>
> ------------ Exampel 2: -----------------------------
>
> class B(A):
>    def __init__(self, *args):
>       apply( A.__init__, (self,) + args)
>
> ------------ Exampel 3: -----------------------------
>
> class B(A):
>    def __init__(self, *args):
>       super(B,self).__init__(*args)

then 2 is exactly the same as 1 but using a deprecated function. And 3 is  
the same as 1 only when there is single inheritance involved (and you are  
using new-style classes). But see the thread "super() doesn't get  
superclass"

-- 
Gabriel Genellina




More information about the Python-list mailing list