class 'Exception', unable to use 'super' to call superclass initializer

chriss chriss at streiff.org
Sat Sep 10 17:19:54 EDT 2005


Hi,

environment: Python 2.4, GNU/Linux, kernel 2.6.12.2

having subclassed 'Exception' I'm trying to call the initialiser
__init__(...) of the superclass Exception with 'super(..).__init__(..)' .
However, trying to do so results in a
'TypeError: super() argument 1 must be type, not classobj'.

Now, if I use 'Exception.__init__(..)' instad of super(..)... ,everything
works just as one would expect.

Why does 'super(..).__init__(..)' fail?


thank you for any suggestions
chriss



Here is some example code to illustrate the point:


class WorkingException(Exception):

    def __init__(self, message):
        # works as I would expect
        Exception.__init__(self, message)
        

class BrokenException(Exception):

    def __init__(self, message):
        # fails with a typeError
        super(BrokenException, self).__init__(self, message)

        
# --------- case 1 ---------
try:
    raise WorkingException("Hello WorkingException")

except WorkingException, e:
    print e

    
# --------- case 3 ---------
 
try:
    raise BrokenException("Hello BrokenException")


except BrokenException, e:
    print e






More information about the Python-list mailing list