[Python-Dev] 'hasattr' is broken by design (original) (raw)
Benjamin Peterson benjamin at python.org
Tue Aug 24 00:25:18 CEST 2010
- Previous message: [Python-Dev] 'hasattr' is broken by design
- Next message: [Python-Dev] 'hasattr' is broken by design
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
2010/8/23 Yury Selivanov <yselivanov at gmail.com>:
On 2010-08-23, at 6:17 PM, Benjamin Peterson wrote: 2010/8/23 Yury Selivanov <yselivanov at gmail.com>:
On 2010-08-23, at 6:00 PM, Guido van Rossum wrote: On Mon, Aug 23, 2010 at 2:22 PM, Yury Selivanov <yselivanov at gmail.com> 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
- Previous message: [Python-Dev] 'hasattr' is broken by design
- Next message: [Python-Dev] 'hasattr' is broken by design
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]