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