[Python-3000] pyvm module - low level interface to Python's VM

Christian Heimes lists at cheimes.de
Fri Nov 30 11:35:18 CET 2007


Dirkjan Ochtman wrote:
> I don't know how hard it would be for Jython, IronPython et al. to 
> support this kind of interface, but seeing as how something like 
> zope.interface relies on it (and therefore all of Twisted, too, I 
> think), it's kind of mandatory anyway.

zope.interface could work without sys._getframe(). It's not mandatory
for its API. getframe is used for a clever hack which makes declaring
interfaces more convenient and readable.

class Example:
    implements(IExample)

The implements() function uses frame inspection to find and modify the
local namespace of the class. The code looks like:

def implements(...):
    frame = sys._getframe(...)
    locals = frame.f_locals
    locals['someinterfacedata'] = ...

The same class and interface definition could be written as:

class Example:
    pass

implements(Example, IExample)

but it's not as readable as the version of implements() with stack
inspection.

Christian



More information about the Python-3000 mailing list