Il 2005-12-15, Ed Leafe <[EMAIL PROTECTED]> ha scritto:
>      Here's what I'm trying to do; please let me know if I'm nuts or  
> not.
>
>      Given a string consisting of the code you would normally define  
> in a class's method, add that compiled code to an instance of that  
> class so that it can be called just like any other bound method.  
> Here's an example:
>
> xx = """def dynamic(self):
>     print "dynamic", self.testAtt
> """
>
> class Test(object):
>      testAtt = "sample"
>      def normalMethod(self):
>          print "normal", self.testAtt
>
> testInstance = Test()
> # Here's where the magic is needed
> # so that the rest of this example works.
> testInstance.normal()
> -> 'normal', 'sample'
> testInstance.dynamic()
> -> 'dynamic', 'sample'
>
>      So? Am I nuts? Or is this possible?
Yes it is, use exec() to turn your string in valid Python code
and bind the dynamic function as a method of class Test

xx = """def dynamic(self):
    print "dynamic", self.testAtt
"""

exec xx

class Test(object):
     testAtt = "sample"
     def normalMethod(self):
         print "normal", self.testAtt

t = Test()
Test.dynamic = dynamic
t.dynamic()



-- 
Lawrence - http://www.oluyede.org/blog
"Anyone can freely use whatever he wants but the light at the end
of the tunnel for most of his problems is Python"
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to