On Mon, May 19, 2008 at 3:27 AM, wcyee <[EMAIL PROTECTED]> wrote: > Hi - I wrote a custom exception class as follows: > > class CustomError(Exception): > def __init__(self, msg): > super(CustomError, self).__init__(self, msg)
Should be super(CustomError, self).__init__(msg) i.e. don't repeat 'self'. > According to the documentation, "super() only works with new-style classes". > Is the problem that Exception is an "old style" class (I'm still learning > what this means)? No > If so, how can I tell when I'm up against an "old style" > class when using python? The type of a new-style class is 'type' (unless it has a custom metaclass). The type of an old-style class is 'classobj': In [20]: type(Exception) Out[20]: <type 'type'> In [21]: class Foo: pass ....: In [22]: type(Foo) Out[22]: <type 'classobj'> New-style classes have a __getattribute__() special method which is missing in old-style classes, so another way to tell is to look for __getattribute__. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor