Fredrik Lundh wrote: > "unexpected" <[EMAIL PROTECTED]> wrote: > > > However, I'm passing in a few variables, so I can't just take it > > out-though every single function would be passing the same variables. > > > > so something.func() is actually > > something.func(string, list) > > > > How would I modify it to include them? > > just add the parameters to the call: > > dispatch[value](string, list) # note: do the call here! >
This will work great if all of your functions recieve the same argument(s). If not, there are still simple solutions. I would suggest a solution like this, since it's simple and generic: class Command (object): def __init__(self, func, *args, **kw): self.func = func self.args = args self.kw = kw def __call__(self, *args, **kw): args = self.args+args kw.update(self.kw) apply(self.func, args, kw) An instance of the Command class can be called just like a function, and it will call the orginial function with the arguments it was instantiated with. (You can also pass additional arguments at the call itself) dispatch = { "something": Command(somethingClass.func), "somethingElse": Command(somethingElseClass.func, "moo", [1,2,3]), "anotherthing": Command(anotherthingClass.func, 'a', 'b', 'c'), "yetanotherthing": Command(yetanotherthingClass.func, verbose=True), } dispatch[value]() - Tal Einat reduce(lambda m,x:[m[i]+s[-1] for i,s in enumerate(sorted(m))], [[chr(154-ord(c)) for c in '.&-&,l.Z95193+179-']]*18)[3] -- http://mail.python.org/mailman/listinfo/python-list