[Python-Dev] [Python-checkins] r86566 - in python/branches/py3k: Doc/glossary.rst Doc/library/inspect.rst Lib/inspect.py Lib/test/test_inspect.py Misc/NEWS Misc/python-wing4.wpr

Michael Foord fuzzyman at voidspace.org.uk
Sat Nov 20 16:29:13 CET 2010


On 20/11/2010 15:21, Nick Coghlan wrote:
> On Sun, Nov 21, 2010 at 1:07 AM, michael.foord
> <python-checkins at python.org>  wrote:
>> +Fetching attributes statically
>> +------------------------------
>> +
>> +Both :func:`getattr` and :func:`hasattr` can trigger code execution when
>> +fetching or checking for the existence of attributes. Descriptors, like
>> +properties, will be invoked and :meth:`__getattr__` and :meth:`__getattribute__`
>> +may be called.
>> +
>> +For cases where you want passive introspection, like documentation tools, this
>> +can be inconvenient. `getattr_static` has the same signature as :func:`getattr`
>> +but avoids executing code when it fetches attributes.
> This description feels a little strong to me - getattr_static still
> executes all those things on the metaclass as it retrieves the
> information it needs to do the "static" lookup. Leaving this original
> description (which assumes metaclass=type) alone and adding a note
> near the end of the section to say that metaclass code is still
> executed might be an improvement.
Can you give an example of code in a metaclass that may be executed by 
getattr_static? It's not that I don't believe you I just can't think of 
an example. Looking up the class and the mro are the only two examples I 
can think of (klass.__mro__ and instance.__class__ - and they are noted 
in the docs?) but aren't metaclass specific.

Michael

> Cheers,
> Nick.
>


-- 

http://www.voidspace.org.uk/

READ CAREFULLY. By accepting and reading this email you agree,
on behalf of your employer, to release me from all obligations
and waivers arising from any and all NON-NEGOTIATED agreements,
licenses, terms-of-service, shrinkwrap, clickwrap, browsewrap,
confidentiality, non-disclosure, non-compete and acceptable use
policies (”BOGUS AGREEMENTS”) that I have entered into with your
employer, its partners, licensors, agents and assigns, in
perpetuity, without prejudice to my ongoing rights and privileges.
You further represent that you have the authority to release me
from any BOGUS AGREEMENTS on behalf of your employer.



More information about the Python-Dev mailing list