[Tutor] Calling super classs __init__?

Ricardo Aráoz ricaraoz at gmail.com
Wed Mar 19 14:36:29 CET 2008


Luciano Ramalho wrote:
> Nowadays the best practice for invoking a method from all superclasses
> (yes, multiple inheritance) is this:
> 
> class SubClass(BaseClass):
>     def __init__(self, t, *args, **kw):
>         super(SubClass, self).__init__(*args, **kw)
>         # do something with t
> 
> That way you let Python decide which superclasses your SubClass has,
> instead of hard-coding it in several places.
> 

You are actually hard-coding it here too, "class SubClass(BaseClass):" 
has "BaseClass" hard-coded. All you do here is hard-code it once instead 
of twice.

> Cheers,
> 
> Luciano
> 
> 
> On Tue, Mar 18, 2008 at 9:37 PM, John Fouhy <john at fouhy.net> wrote:
>> On 19/03/2008, Allen Fowler <allen.fowler at yahoo.com> wrote:
>>  >  I have a super class that accepts many arguments to it's constructor, and a subclass that should define one additional argument.
>>  >
>>  >  What's the most "pythonic" way to make this work?
>>
>>  class BaseClass(object):
>>   def __init__(self, x, y, z, foo='foo'): # whatever
>>      # etc
>>
>>  class SubClass(BaseClass):
>>   def __init__(self, t, *args, **kw):
>>     BaseClass.__init__(self, *args, **kw)
>>     # do something with t
>>
>>  This does mean that the special sub class argument has to come before
>>  the base class arguments when you create instances.
>>
>>  Whether you call BaseClass.__init__ early or late in the subclass init
>>  method could depend on what your classes are doing.  Remember, in
>>  Python, __init__ only initializes objects, it doesn't create them.
>>  It's just another bit of code that you can call whenever you want.
>>
>>  --
>>  John.
>>
>>
>> _______________________________________________
>>  Tutor maillist  -  Tutor at python.org
>>  http://mail.python.org/mailman/listinfo/tutor
>>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 




More information about the Tutor mailing list