Extending classes __init__behavior for newbies

Steven D'Aprano steve+comp.lang.python at pearwood.info
Mon Feb 14 00:01:02 CET 2011


On Mon, 14 Feb 2011 08:27:10 +1000, James Mills wrote:

> On Mon, Feb 14, 2011 at 8:21 AM, MRAB <python at mrabarnett.plus.com>
> wrote:
>> I would've done it this way:
>>
>> class FasterShip(Ship):
>>    def __init__(self, speed=0, **kwargs):
>>        Ship.__init__(self, **kwargs)
>>        self.speed = speed
> 
> What's the difference between calling the base class's constructor
> directly and using the super type ?

If you have *only* single inheritance, then there is no practical 
difference and no harm in using super().

If you have multiple inheritance, then you *must* use super(), otherwise 
your method will not correctly call all the superclasses that it needs to.



-- 
Steven



More information about the Python-list mailing list