TheSaint a écrit :
On 01:15, lunedì 16 giugno 2008 Calvin Spealman wrote:

such as getattr(obj,
methname)(a, b, c). Does this make sense?

This is big enlightenment :) Thank you! :)

I found problem with eval() when it comes to pass quoted strings.
I circumvent that by encapsulating the strings in variable or tuple.
The principle is to have a name which will refers a function somewhere in the
program and to call that function, plus additional data passed in.

In other word I'd expect something:

function_list= ['add' ,'paint', 'read']
for func in function_list:
      func(*data)

Can't work - function_list is a list of strings, not a list of functions. If the functions you intend to call are already bound to names in the current scope, you don't even need any extra lookup indirection:

def add(*args):
  # code here

from some_module import paint

obj = SomeClass()
read = obj.read

functions = [add, paint, read]
args = [1, 2]
for func in functions:
    func(*args)


I tried getattr,

getattr is useful when you only have the name of the function/method/whatever attribute as a string. And a target object (hint: modules are objects too) of course - if the name lives either in the global or local namespace, you can access it by name using the dicts returned by resp. the globals() and locals() functions.

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

Reply via email to