[Python-Dev] Instance variable access and descriptors

Kevin Jacobs <jacobs@bioinformed.com> bioinformed at gmail.com
Sun Jun 10 02:28:31 CEST 2007


I agree with Phillip with regard to the semantics.  They are semantically
desirable.  However, there is a patch to add a mro cache to speed up these
sorts of cases on the Python tracker, originally submitted by Armin Rigo.
He saw ~20% speedups, others see less.  It is currently just sitting there
with no apparent activity.  So if the overhead of mro lookups is that
bothersome, it may be well worth your time to review the patch.

URL:
http://sourceforge.net/tracker/index.php?func=detail&aid=1700288&group_id=5470&atid=305470

-Kevin


On 6/9/07, Phillip J. Eby <pje at telecommunity.com> wrote:
>
> At 12:23 AM 6/10/2007 +0300, Eyal Lotem wrote:
> >A. It will break code that uses instance.__dict__['var'] directly,
> >when 'var' exists as a property with a __set__ in the class. I believe
> >this is not significant.
> >B. It will simplify getattr's semantics. Python should _always_ give
> >precedence to instance attributes over class ones, rather than have
> >very weird special-cases (such as a property with a __set__).
>
> Actually, these are features that are both used and desirable; I've
> been using them both since Python 2.2 (i.e., for many years
> now).  I'm -1 on removing these features from any version of Python, even
> 3.0.
>
>
> >C. It will greatly speed up instance variable access, especially when
> >the class has a large mro.
>
> ...at the cost of slowing down access to properties and __slots__, by
> adding an *extra* dictionary lookup there.
>
> Note, by the way, that if you want to change attribute lookup
> semantics, you can always override __getattribute__ and make it work
> whatever way you like, without forcing everybody else to change *their*
> code.
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> http://mail.python.org/mailman/options/python-dev/jacobs%40bioinformed.com
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-dev/attachments/20070609/154fe92e/attachment.htm 


More information about the Python-Dev mailing list