extender method
davehowey at f2s.com
davehowey at f2s.com
Wed Jul 26 12:21:10 EDT 2006
'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
# 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
More information about the Python-list
mailing list