[Python-3000] pyvm module - low level interface to Python's VM
Phillip J. Eby
pje at telecommunity.com
Mon Dec 3 15:19:02 CET 2007
At 10:18 PM 12/3/2007 +1000, Nick Coghlan wrote:
>Phillip J. Eby wrote:
> > 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.
>
>Aren't the metaclass changes in PEP 3115 partially aimed at eliminating
>the need for stack frame hackery to implement these kinds of things?
>(e.g. the metaclass could stuff a closure into the class namespace under
>the name 'implements' to avoid any need for frame hackery).
Doesn't help. You're assuming a *single* metaclass, which means you
can't use things from more than one library in the same class. It
defeats any possibility of modularity.
I want method decorators and class-body decorators to be able to
work, and to be able to use ones from different libraries in the same
class, without needing to do manual metaclass mixing. If Python
automagically generated mixed metaclasses (as described in the book
that Python's metaclass rules largely come from), it would be a lot
less of a problem.
More information about the Python-3000
mailing list