[Python-Dev] str(Exception) changed, is that intended? (original) (raw)

Guido van Rossum guido at python.org
Tue Mar 7 22:35:54 CET 2006


On 3/7/06, Brett Cannon <brett at python.org> wrote:

On 3/7/06, Thomas Heller <theller at python.net> wrote: > I know that my unittests should not rely on this, but is this change > intended? > > c:\sf\ctypeshead>py24 > Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32 > Type "help", "copyright", "credits" or "license" for more information. > >>> str(Exception) > 'exceptions.Exception' > >>> ^Z > > > c:\sf\ctypeshead>py > Python 2.5a0 (trunk:42903M, Mar 7 2006, 22:01:07) [MSC v.1310 32 bit (Intel)] on win32 > Type "help", "copyright", "credits" or "license" for more information. > >>> str(Exception) > "<class 'exceptions.Exception'>" > >>> ^Z

It's a side-effect of making built-in exceptions new-style classes. Not sure how you would override the string representation of a class anyway to fix this.

IMO it shouldn't be fixed. Classic classes define their str to print the module name and class name with a dot in between; new-style classes use the same format as their repr. Making exceptions new-style classes is going to break a number of things; that's just inevitable.

-- --Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list