I'm writing a factory function that needs to use keywords in the produced 
function, not the factory. Here's a toy example:

def factory(flag):
    def foo(obj, arg):
        if flag:
            # use the spam keyword to method()
            return obj.method(spam=arg)
        else:
            # use the ham keyword
            return obj.method(ham=arg)
    return foo

Problem: the test of which keyword to use is done every time the produced 
function is called, instead of once, in the factory.

I thought of doing this:

def factory(flag):
    if flag: kw = 'spam'
    else: kw = 'ham'
    def foo(obj, arg):
        kwargs = dict([(kw, arg)])
        return obj.method(**kwargs)
    return foo

Is this the best way of doing this? Are there any alternative methods 
that aren't risky, slow or obfuscated?

Before anyone suggests changing the flag argument to the factory to the 
name of the keyword, this is only a toy example, and doing so in my 
actual code isn't practical. 



-- 
Steven.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to