Adding new methods at runtime to a class

Peter Otten __peter__ at web.de
Mon Nov 24 04:54:22 EST 2003


Fernando Rodriguez wrote:

> Hi,
> 
> How can I add new methods at runtime to a class?

Here's one dumb way to do it:

class Test(object):
    def __str__(self):
        return self.first() + self.second() + self.third()

for m in "first second third".split():
    setattr(Test, m, lambda self, name=m: "<%s>" % name)

t = Test()
print t
Test.second = lambda self: "<SECOND>"
print t

The obvious question: why do you want to do it?
The question you didn't ask: Is there a better way to solve my  problem
(whatever that may be)
The most likely answer: YES!

Peter




More information about the Python-list mailing list