Luis Zarrabeitia wrote:
Btw, is there any way to inject a name into a function's namespace? Following
the python tradition, maybe we should try to create a more general solution!
How about a mechanism to pass arguments that are optional to accept?
So (in the general case) the caller can call a function with certain
arguments, but unless the function explicitly accept it, the argument
will be discarded.
With this, the injecting a local would simply be a case of adding an "I
accept the argument" statement.
Sort of like this:
def func():
''' I reject '''
pass
func(@somearg='Feel free to accept this arg')
def func(@somearg):
''' I accept '''
print(somearg)
func(@somearg='Feel free to accept this arg')
Then on the case of injecting locals is simply by wrapping the function
with a function that will inject various argument to the function and
the function selectively choose which arguments they want to accept.
def needinfo(f):
# let's assume there is an inspect code here
func(@__name__=yournameis,
@__call__=yourfunction,
@__code__=yourcode,
@__yoursub__=youryo,
@__yourlim__=yoururso,
@__yourina__=yournisk,
@__yourlmes__=youridna,
@__yoursage__=yourpped
)
@needinfo
def func(@__name__, @__call__):
print 'Hi, my name is %s and to call me press %s' % (__name__,
__call__)
Does it sounds like a feature smell?
--
http://mail.python.org/mailman/listinfo/python-list