"Super()" confusion
Robert Kern
robert.kern at gmail.com
Mon Feb 9 18:27:18 EST 2009
On 2009-02-09 17:20, Lionel wrote:
> Hello. I've been scouring the web looking for something to clear up a
> little confusion about the use of "super()" but haven't found anything
> that really helps. Here's my simple example:
>
>
> class Parent:
> def __init__(self, filePath):
> .
> .
> Do some processing with "filePath"
> .
> .
>
> class Child(Parent):
> def __init__(self, filePath):
> super(Child,self).__init__(filePath)
> .
> .
> Do some additional Child-specific processing on filePath
> .
> .
>
> As I understand it, "super()" will invoke the initializer of the base
> class. There must be something wrong with the above syntax since I'm
> getting:
>
> "super(Child,self).__init__(filePath)
> TypeError: super() argument 1 must be type, not classobj"
>
> What have I done wrong? Thanks in advance for any help.
super() only works on the "new-style" classes introduced in Python 2.2. You need
to make Parent subclass from object:
class Parent(object):
...
--
Robert Kern
"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
More information about the Python-list
mailing list