As discussed on python-dev mailing list (http://mail.python.org/pipermail/python-dev/2010-August/103178.html), 'hasattr' default behaviour should be changed to suppress only AttributeError exceptions. Other should pass through. The fix, however, shouldn't change behaviour of existing C API, functions PyObject_HasAttr and PyObject_HasAttrString in particular. I'm targeting this issue on Python 3.2 version, but probably it may be introduced in the next Python 3.1 maintenance release.