[Python-Dev] 'hasattr' is broken by design

Guido van Rossum guido at python.org
Mon Aug 23 16:56:50 CEST 2010


On Mon, Aug 23, 2010 at 7:46 AM, Benjamin Peterson <benjamin at python.org> wrote:
> 2010/8/23 Yury Selivanov <yselivanov at gmail.com>:
>> 1) I propose to change 'hasattr' behaviour in Python 3, making it to swallow only AttributeError exceptions (exactly like 'getattr').  Probably, Python 3.2 release is our last chance.
>
> I would be in support of that.

I am cautiously in favor. The existing behavior is definitely a
mistake and a trap. But it has been depended on for almost 20 years
now.

I recommend that you create a patch, apply it, run the *entire* stdlib
test suite and see how much breaks. That will give you an idea of the
damage to expect for 3rd party code.

>> 2) If you afraid that this new behaviour will break too much python 2 code converted with 2to3, we can introduce another 'hasattr' function defined in 2to3 module itself, and make it imported automatically in all files passed through 2to3 transformation pipeline.  This new function will mimic 'hasattr' behaviour from python 2 and converted code should work as expected.
>
> But not this. Compatibility functions don't belong in 2to3.

Indeed.

-- 
--Guido van Rossum (python.org/~guido)


More information about the Python-Dev mailing list