Dwayne C. Litzenberger wrote:
> I'm bringing this up again because the arguments I've seen in favour of 
> fixing hasattr have been fairly weak, and I'd like to raise some stronger 
> ones.  Also, I haven't seen this issue considered specifically in the 
> context of Python 3000.

The behavior of hasattr and (IIRC) isinstance and issubclass has been a
problem for several applications. For instance Zope requires code to
re-raise ConflictErrors. ZODB conflict errors must bubble through the
program flow until it hits the ZODB transaction system so it can re-roll
the transaction.

> I propose a few alternate behaviours for hasattr (and their consequences):
> 
>      1. Swallow only AttributeError.
> 
>          - KeyboardInterrupt, SystemExit, and AssertionError are all passed 
>            through, solving all three of the above problems.
> 
>          - The behaviour of hasattr is made consistent with getattr(x,y,z).

I prefer 1) for Python 3.0

>      2. Swallow only Exception.
> 
>          - KeyboardInterrupt and SystemExit are passed through, but 
>            AssertionError is still swallowed.
> 
>          - Breaks less code than the previous option.

I think it's a sensible solution for Python 2.6.

Christian
_______________________________________________
Python-3000 mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to