access to the namespace of a function from within its invocation
Poor Yorick
org.python.python-list at pooryorick.com
Thu Jul 12 23:13:47 EDT 2007
In the example below, the attribute "data" is added to a function
object. "me" can be used to get the function when it is invoked using
an identifier that matches the "co_name" attribute of function's code
object. Can anyone conjure an example of accessing fun2.data from
without prior knowledge of the value of fun2.f_code.co_name?
###code begin###
#!/bin/python
import sys
def me():
t = sys._getframe(0)
return t.f_back.f_globals[t.f_back.f_code.co_name]
def fun1():
m = me
print me().data
def makefun () :
def tmpfunc():
print 'need something like me().data'
return tmpfunc
fun1.s = fun1
fun1.data=['one', 'two', 'three']
fun1()
fun2 = makefun()
fun2.data=['four', 'five','six']
fun2()
###code end###
--
Poor Yorick
More information about the Python-list
mailing list