[Python-3000] pyvm module - low level interface to Python's VM
Phillip J. Eby
pje at telecommunity.com
Fri Nov 30 18:37:58 CET 2007
At 04:52 PM 11/30/2007 +0000, Paul Moore wrote:
>On 30/11/2007, Barry Warsaw <barry at python.org> wrote:
> > >> class Example:
> > >> implements(IExample)
> >
> > This frame hacking is also a pretty common feature of other types of
> > systems, such as ORMs. It can make certain Python code much more
> > readable, so "frame hacking" is clearly a useful feature, at least it
> > seems, in the context of a class definition. Is there a way to
> > promote this to an API that's more principled than the sys._getframe
> > () hack, and thus more acceptable to Guido and more portable to other
> > implementations?
> >
> > (Or is something like this already in Py3K, and I just haven't
> > noticed it yet? ;).
>
>There's class decorators:
>
> @implements(IExample)
> class Example:
> pass
>
>which could provide the same result in effect, but (as J-P points out)
>it's still an API change and so not a direct replacement. IIRC, one of
>the arguments for class decorators was that they are a way to avoid
>the need for some of this getframe hacking, though.
Well, for what class-level frame hacking is typically used for, it
would suffice to have a convenient way to refer to the local
namespace, e.g. if you could do something like:
implements(@, IExample)
where @ was a shortcut for locals(). The most-used frame hacks (in
zope.interface and most PEAK tools) just want to access the namespace
of the current class definition, and maybe decorate the class in some way.
More information about the Python-3000
mailing list