On 2010-08-23, at 5:22 PM, Yury Selivanov wrote:

> On 2010-08-23, at 5:02 PM, Michael Foord wrote:
> 
>> On 23/08/2010 23:55, Benjamin Peterson wrote:
>>> 2010/8/23 Raymond Hettinger<raymond.hettin...@gmail.com>:
>>>> On Aug 23, 2010, at 1:13 PM, Benjamin Peterson wrote:
>>>> 
>>>>> 2010/8/23 Michael Foord<fuzzy...@voidspace.org.uk>:
>>>>>> To me hasattr *looks* like a passive introspection function, and the fact
>>>>>> that it can trigger arbitrary code execution is unfortunate - especially
>>>>>> because a full workaround is pretty arcane.
>>> hasattr(x, "y") doesn't look any more passive to me the x.y.
>> One says "does this object have attribute y" the other fetches attribute y. 
>> I'm amazed they don't look different to you. Given Python's object model 
>> there is no reason that the first *should* fetch the attribute to determine 
>> that it is present, *except* for the dynamic attribute creation of 
>> __getattr__ and __getattribute__.
> 
> As I understand the only possible way to make 'hasattr' work as it name 
> indicates (i.e. just check if attribute exists, not run it), is to add 
> another magic method(s?) to the existing __getattr__ and __getattribute__ 
> which will tell whether attribute exists or not, and by default this method 
> would mimic current 'hasattr' behaviour.

I'm not sure we should do this, but if such method exists, let's call it 
__hasattribute__, ORMs, for instance, probably would benefit.

-
Yury
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to