2010/8/23 Yury Selivanov <[email protected]>:
>> On 2010-08-23, at 6:17 PM, Benjamin Peterson wrote:
>> 2010/8/23 Yury Selivanov <[email protected]>:
>>>> On 2010-08-23, at 6:00 PM, Guido van Rossum wrote:
>>>> On Mon, Aug 23, 2010 at 2:22 PM, Yury Selivanov <[email protected]>
>>>> wrote:
>>> BTW, is it possible to add new magic method __hasattr__? Maybe not
>>> in Python 3.2, but in general.
>>
>> -1 The whole point of hasattr() is that getattr() on that attribute
>> would return something. Let's not destroy that.
>
> By default, if you don't overload __hasattr__, it will do exactly that.
>
> But let's imagine the situation in some ORM. Sometimes, engine knows that
> attribute exists even before executing it (which leads to querying DB), and
> thus it is possible to return True in the overloaded __hasattr__.
>
> Example:
> ... if hasattr(entity, 'title'): # <- __hasattr__ has the info in metadata,
> # no query to DB
> ... title = entity.title # <- now, we can query the DB
In this case, I think it would make more sense to ask the model:
type(entity).has_property("title")
>
> So, the proposed magic method is not intended to change the protocol,
> but to complement and enhance it.
But it still raises the potential to break the relationship between
hasattr and getattr.
I think this should require a PEP.
--
Regards,
Benjamin
_______________________________________________
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