"J. David Ibanez" <[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
Given that the behavior of hasattr is clearly defined in Lib Manual 2.1 as
equivalent to
def hasattr(obj, name):
try:
getattr(obj, name)
return True
except:
return False
I am not sure what could be confusing about it. It is a simple getattr
wrapper converting 'got something' to True and 'did not get anything'
(raised an exception instead) to False. Users should know this so they
don't wastefully write 'if hasattr(o,n): x = getattr(o,n)'
[snip]
>Today I have spent a while to hunt down a couple of bugs in my
>application,
>because "hasattr" was catching the exceptions.
[snip
If you want a different behavior, you can write your own version now,
without waiting for a future that may never come, that only converts
AttributeError to False and that possibly collapses all others to one type
of your choosing. To make sure that even this does not mask a bug, one
needs to make sure that .__getattr__ methods do not pass on unintended
bug-indicating AttributeErrors.
Terry J. Reedy
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com