At 10:17 PM 12/3/2007 -0700, Neil Toronto wrote:
>Phillip J. Eby wrote:
> > Actually, you're missing the part where such evil code *can't* muck
> > things up for class dictionaries.  Type dicts aren't reachable via
> > ordinary Python code; you *have* to modify them via setattr.  (The
> > __dict__ of types returns a read-only proxy object, so the most evil
> > rich compare you can imagine still can't touch it.)
>
>Interesting. But I'm going to have to say it probably wouldn't work as
>well, since C code can and does alter tp_dict directly. Those places in
>the core would have to be altered to invalidate the cache.

Eh?  Where is the type dictionary altered outside of setattr and 
class creation?


>  There's also
>the issue of extensions, which so far have been able to alter any
>tp_dict without problems.

Do you have any actual examples?

Believe me, I'm the last person to suggest removing useful hack, er, 
hooks.  :)  But I don't think that type __dict__ munging is actually 
common at all.


>It'd also be really annoying for a class to
>have to notify all of its subclasses when one of its attributes changed.

It's not all subclasses - only those subclasses that don't shadow the 
attribute.  Also, it's not necessarily the case that notification 
would be O(subclasses) - it could be done via a version counter, as 
in your approach.  Admittedly, that would require an extra bit of 
indirection, since you'd need to keep (and check) counters for each descriptor.

_______________________________________________
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

Reply via email to