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

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\ctypes_head>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\ctypes_head>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