I'm trying to replace the built-in base exception class with a subclass of itself in python 2.5 because we can no longer add attributes to that...
% python2.4 -c 'import exceptions; exceptions.Exception.bar = 1234' % python2.5 -c 'import exceptions; exceptions.Exception.bar = 1234' Traceback (most recent call last): File "<string>", line 1, in <module> TypeError: can't set attributes of built-in/extension type 'exceptions.Exception' % python2.5 -c 'import exceptions; exceptions.BaseException.bar = 1234' Traceback (most recent call last): File "<string>", line 1, in <module> TypeError: can't set attributes of built-in/extension type 'exceptions.BaseException' I already have a way to programatically construct the hierarchy of subclasses, so for example, my subclass of OSError is a subclass of the built-in OSError and a subclass of my subclass of EnvironmentError. The only thing left to do is find a way to replace the built-in exception types with my custom ones. - Nishkar Calvin Spealman wrote: > > Why would you do this? How to do it, if its even possible, is far less > important than if you should even attempt it in the first place. > > > On Dec 11, 2007, at 3:51 PM, Nishkar Grover wrote: >> >> I'm trying to replace a built-in exception type and here's a simplified >> example of what I was hoping to do... >> >> >>> >> >>> import exceptions, __builtin__ >> >>> >> >>> zeroDivisionError = exceptions.ZeroDivisionError >> >>> >> >>> class Foo(zeroDivisionError): >> ... bar = 'bar' >> ... >> >>> >> >>> exceptions.ZeroDivisionError = Foo >> >>> ZeroDivisionError = Foo >> >>> __builtin__.ZeroDivisionError = Foo >> >>> >> >>> try: >> ... raise ZeroDivisionError >> ... except ZeroDivisionError, e: >> ... print e.bar >> ... >> bar >> >>> >> >>> try: >> ... 1/0 >> ... except ZeroDivisionError, e: >> ... print e.bar >> ... >> Traceback (most recent call last): >> File "<stdin>", line 2, in ? >> ZeroDivisionError: integer division or modulo by zero >> >>> >> >> Notice that I get my customized exception type when I explicitly raise >> ZeroDivisionError but not when that is implicitly raised by 1/0. It >> seems like I have to replace that exception type at some lower level, >> but I'm not sure how/where. Does anyone know of a way to do this? >> >> - Nishkar >> >> --http://mail.python.org/mailman/listinfo/python-list > -- http://mail.python.org/mailman/listinfo/python-list