[Patches] [ python-Patches-504714 ] hasattr catches only AttributeError
noreply@sourceforge.net
noreply@sourceforge.net
Sat, 16 Mar 2002 00:55:23 -0800
Patches item #504714, was opened at 2002-01-17 02:52
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=305470&aid=504714&group_id=5470
Category: Core (C code)
Group: Python 2.1.2
Status: Open
Resolution: None
Priority: 5
Submitted By: Quinn Dunkan (quinn_dunkan)
Assigned to: Nobody/Anonymous (nobody)
Summary: hasattr catches only AttributeError
Initial Comment:
Curse me for a fool. I reported this exact same thing
in getattr but failed to
look 30 lines down to notice hasattr.
hasattr(foo, 'bar') catches all exceptions. I think it
should only catch
AttributeError. Example:
>>> class Foo:
... def __getattr__(self, attr):
... assert 0
...
>>> f = Foo()
>>> hasattr(f, 'bar')
0 # should have gotten an AssertionError
>>>
This patch makes hasattr only catch AttributeError. I
changed the
docstring to reflect that, and also changed the getattr
docstring
to read a little more naturally.
----------------------------------------------------------------------
>Comment By: Quinn Dunkan (quinn_dunkan)
Date: 2002-03-16 08:55
Message:
Logged In: YES
user_id=429749
That's true, but the current behavior can mask bugs
unexpectedly. For example, if you ask someone if the
brakes are engaged, and they discover that the brakes have
crumbled to dust and fallen off, you probably want a
different answer than "no". :)
getattr() (now) only catches AttributeErrors, so there's
a consistency thing too.
Anyway, it's your call :)
----------------------------------------------------------------------
Comment By: Just van Rossum (jvr)
Date: 2002-03-16 08:24
Message:
Logged In: YES
user_id=92689
(The patch seems to be reversed.)
The patch otherwise looks fine to me, but it will break
code that depends on the current behavior.
It can be argued that if getattr() raises *any* error, the
attr doesn't exist, so the current behavior is in fact
correct.
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=305470&aid=504714&group_id=5470