C
chriss
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
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