raising classes

Mark McEahern marklists at mceahern.com
Tue Aug 20 01:02:43 CEST 2002


[Paul Rubin]
> Are you saying that
>
>    class foo(Exception): pass
>    ...
>    raise foo
>
> raises foo's class object rather than instantiating foo?
>
> What happens on
>
>   class foo(Exception): pass
>   class bar(foo): pass
>   try:
>      ...
>        raise bar
>   except foo:
>     print 'foo exception'

Extending your question/idea a bit, I offer this, which hopefully will serve
to answer the question:

#! /usr/bin/env python

class foo(Exception):
    def __init__(self, *args, **kwargs):
        print "%s(%s, %s)" % (self.__class__.__name__, args, kwargs)

class bar(foo):
    def __init__(self, *args, **kwargs):
        foo.__init__(self, *args, **kwargs)

try:
    raise bar
except foo:
    print 'foo exception'

Cheers,

// mark

-





More information about the Python-list mailing list