[Python-Dev] locals() (was Re: accumulator display syntax)
Guido van Rossum
guido at python.org
Tue Oct 21 18:25:28 EDT 2003
More information about the Python-Dev mailing list
Tue Oct 21 18:25:28 EDT 2003
- Previous message: [Python-Dev] locals() (was Re: accumulator display syntax)
- Next message: [Python-Dev] accumulator display syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
> >Argh, someone *could* pass around a copy of locals() and make an > >assignment into that. > > Not when the locals() is that of a CPython function, and I expect the same > is true of Jython functions. Well, the effect is undefined; there may be things you can do that would force the changes out to the real local variables. > > But I think we're already deprecating > >non-read-only use of locals(), so I'd like to ban that as abuse. > > FWIW, both Zope 3 and PEAK currently make use of 'locals()' > (actually, sys._getframe()) to modify locals of a class or module > scope (i.e. non-functions). For both class and module scopes, it > seems to be implied by the language definition that the local > namespace is the __dict__ of the corresponding object. > > So, is this deprecated usage for class and module objects too? It isn't. I'm not sure it shouldn't be; at some point it might be attractive to lock down the namespace of certain modules and classes, and in fact new-style classes already attempt to lock down their __dict__. Fortunately the __dict__ you see when executing a function during the class definition phase is not the class dict; the class dict is a copy of it taken by the class creation code. --Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-Dev] locals() (was Re: accumulator display syntax)
- Next message: [Python-Dev] accumulator display syntax
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list