How to dynamicly define function and call the function?

Leif K-Brooks eurleif at ecritters.biz
Thu Sep 8 23:53:00 EDT 2005


FAN wrote:
> class test:
>         def __init__(self):
>             exec("def dfunc(msg):\n\tprint msg\nprint 'exec def function'")
>             dfunc('Msg in init ...')   #  it work
> 			
>         def show(self, msg):
>              dfunc(msg) # doesn't work !
>              exec('dfunc(msg)')  # doesn't work too!

class Test(object):
    def __init__(self):
        exec "def dfunc(msg):\n print msg"
        dfunc('Hello from __init__.')
        self.dfunc = dfunc

    def show(self, msg):
        self.dfunc(msg)


(Of course, this is assuming your real function is more complicated than
the one you've posted; if it isn't, you don't need to use exec to define
it.)



More information about the Python-list mailing list