A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2008-March/077715.html below:

[Python-Dev] New/Old class exception pitfall

[Python-Dev] New/Old class exception pitfallAlexander Belopolsky alexander.belopolsky at gmail.com
Tue Mar 18 00:18:25 CET 2008
On Mon, Mar 17, 2008 at 6:49 PM, Guido van Rossum <guido at python.org> wrote:
..
>  Really? Under which version exactly? On which platform? I cannot
>  reproduce this with either 2.4, 2.5 or 2.6 on OS X.

Just retested in

Python 2.6a1+ (trunk:61449M, Mar 17 2008, 17:29:21)
[GCC 3.4.6 20060404 (Red Hat 3.4.6-3)] on linux2

and

Python 2.5 (r25:51908, Nov 24 2006, 11:03:50)
[GCC 3.4.4 20050721 (Red Hat 3.4.4-2)] on linux2


I don't have my PowerBook here,  but I am sure I've seen in on Mac OS
too.  Only new-style class behavior is problematic.  The following
code prints 'b' for me:

__metaclass__ = type
class x:
    pass
class y(x):
    pass
try:
    raise y
except y:
    print "a"
except:
    print "b"


>  Which one would expect regardless of the metaclass, right?

Yes.

>  I have no idea what you are talking about. Can you quote a file,
>  revision and line number where this is done?
>

Sorry for the lack of details.  The code in question is at
trunk/Python/errors.c:108 as of r61467:

"""
if (PyExceptionClass_Check(err) && PyExceptionClass_Check(exc)) {
        /* problems here!?  not sure PyObject_IsSubclass expects to
           be called with an exception pending... */
        return PyObject_IsSubclass(err, exc);
}

return err == exc;
"""
(flushed left hoping it won't get garbled)

As you can see, subclass check is only performed if
PyExceptionClass_Check(err) passes, which includes a check for err
being derived from BaseException (see Include/pyerrors.h).  This logic
allows returning err == exc when err is a string.
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4