extender method

jon cashman joncashman_1967 at hotmail.com
Wed Jul 26 13:00:25 EDT 2006


>>>class S:
	def __init__(self, **k): self.data = k


>>>class E(S):
	def __init__(self, **k):
		S.__init__(self, **k)


>>>x = E(a=1)
>>>print x.data
{'a': 1}
>>>




>From: davehowey at f2s.com
>To: python-list at python.org
>Subject: extender method
>Date: 26 Jul 2006 09:21:10 -0700
>
>'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
>
>--
>http://mail.python.org/mailman/listinfo/python-list

_________________________________________________________________
Is your PC infected? Get a FREE online computer virus scan from McAfee® 
Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963




More information about the Python-list mailing list