2010/8/23 Michael Foord <fuzzy...@voidspace.org.uk>: > On 24/08/2010 00:40, Nick Coghlan wrote: >>> >>> Properties are allowed to do whatever the heck they want. That doesn't >>> mean >>> that you have to execute code to determine whether they exist or not. >> >> If you don't want to execute properties, do the lookup on the type, >> not the instance (obviously, you know the dance you need to do, since >> you've linked the code where you did it). Having apparently simple >> query operations like hasattr/getattr/len/etc execute arbitrary code >> is where much of the language's flexibility comes from, so I don't see >> how it can really be surprising when it happens. > > Certainly that is true for len. getattr obviously involves invoking code if > you are fetching a property or descriptor. No idea how you conclude that > hasattr executing code adds flexibility to the language though. > > Yes I know the dance (walking the mro fetching the attribute out of the > appropriate type __dict__ or the instance dict - or looking on the metaclass > if the object you are introspecting is a type itself), it is just not > trivial - which is why I think it is a shame that people are forced to > implement it just to ask if a member exists without triggering code > execution.
Sounds like something for a new function. -- Regards, Benjamin _______________________________________________ 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