Adding methods to instances
raims at dot.com
Thu Dec 15 17:51:32 CET 2005
Il 2005-12-15, Ed Leafe <ed at leafe.com> ha scritto:
> Here's what I'm trying to do; please let me know if I'm nuts or
> 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.
> -> 'normal', 'sample'
> -> '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
testAtt = "sample"
print "normal", self.testAtt
t = Test()
Test.dynamic = 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"
More information about the Python-list