On Sun, 18 Apr 2010 07:47:08 am Maciej Fijalkowski wrote:
> On Sat, Apr 17, 2010 at 1:03 PM, Steve Holden <st...@holdenweb.com> 
wrote:
> > Dino Viehland wrote:
> >> Maciej wrote:
> >
> > [...]
> >
> >>> And yet that breaks some code :-)
> >>
> >> Sure, if you do:
> >>
> >> class C(object):
> >>     locals()[object()] = 42
> >>
> >> dir(C)
> >>
> >> You lose.  Once I'm aware of some piece of code in the wild doing
> >> this then I'll be happy to change IronPython to be more
> >> compatible. :)
> >
> > This would be a lose anyway, since the CPython specifications
> > suggest that you should not rely on being able to change locals()
> > (or at least shouldn't expect that such changes are actually
> > reflected in the local namespace).
>
> You can override __new__ of a type subclass to achieve the same
> effect (or even directly call type.__new__ with strange dict as an
> argument).

I think that only works in Python 3.x, in 2.x the __dict__ is always a 
regular dict no matter what you pass. At least for CPython. If there is 
a way to set the dict of a class to something other than a regular dict 
in CPython 2.x, I would be very pleased!



-- 
Steven D'Aprano
_______________________________________________
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