[Tutor] Superclass call problem

Alan Harris-Reid aharrisreid at googlemail.com
Sun Feb 21 00:55:18 CET 2010


Luke Paireepinart wrote:
> Your call to super is wrong. It should be super and you pass the class
> and instance, then call init.
>
> On 2/20/10, Alan Harris-Reid <aharrisreid at googlemail.com> wrote:
>   
>> Hi,
>>
>> I am having trouble understanding how superclass calls work.  Here's
>> some code...
>>
>> class ParentClass():
>>     def __init__(self):
>>         do something here
>>
>> class ChildClass(ParentClass):
>>     def __init__(self):
>>        super().__init__(self)                 # call parentclass
>> __init__ method
>>        do something else here
>>
>>
>> When the super().__init__ line runs I get the error "__init__() takes
>> exactly 1 positional argument (2 given)"
>>
>> Can anyone tell me where I have gone wrong?  I thought the self
>> parameter should be passed to all class methods.
>>
>> TIA
>> Alan Harris-Reid
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> http://mail.python.org/mailman/listinfo/tutor
Hi Luke, thanks for the reply,

In addition to your suggestion, looks like I can use

class ChildClass(ParentClass):
    def __init__(self, arg):
        super(ParentClass, self).__init__(arg)
        or
        super().__init__(arg)        # this only works in Python 3, I think

I prefer the 2nd way, as it is more generic (ie. don't need to state 
parent-class).

Regards,
Alan



More information about the Tutor mailing list