extender method

Chris Lambacher chris at kateandchris.net
Wed Jul 26 12:43:22 EDT 2006


On Wed, Jul 26, 2006 at 09:21:10AM -0700, davehowey at f2s.com wrote:
> 'Learning Python' by Lutz and Ascher (excellent book by the way)
> explains that a subclass can call its superclass constructor as
> follows:
> 
> class Super:
>    def method(self):
>    # do stuff
> 
> class Extender(Super):
>    def method(self):
>    Super.method(self)   # call the method in super
>    # do more stuff - additional stuff here
> 
> 
> 
> I'm trying to use this for a superclass called 'component' in the
> constructor. I have different types of component (let's say for
> arguments sake resistor, capacitor etc). When I instantiate a new
> resistor, say, I want the constructor to call the constructor within
> the component superclass, and then add some resistor-specific stuff.
> 
> Now, this is fine using the above code. Where I'm struggling is with
> argument passing. The following, for example, doesn't seem to work:
> 
> class Super:
>    def __init__(self, **kargs):
>    self.data = kargs
> 
> class Extender(Super):
>    def __init__(self, **kargs):
>    Super.__init__(self, kargs)   # call the constructor method in Super
You mean
     Super.__init__(self, **kargs)

Note the ** in the call the parent's init method.
>    # do additional extender-specific stuff here
> 
> What am I doing wrong? I get:
> TypeError: __init__() takes exactly 1 argument (2 given)
> WARNING: Failure executing file: <main.py>
> 
> Dave
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list



More information about the Python-list mailing list