Aaron Scott <[EMAIL PROTECTED]> writes:

> Is it possible to change the content of a function after the function
> has been created? For instance, say I make a class:
>
>       class MyClass:
>               def ClassFunction(self):
>                       return 1
>
> And I create an object:
>
>       MyObject = MyClass()
>
> Is there any way to change the content of the function, a la pseudo-
> code:
>
>       MyObject.ClassFunction = "return 2"

Yes there is:

>>> class Foo(object):
...    def __init__(self, x):
...        self.x = x
...    def bar(self):
...        return self.x
... 
>>> foo = Foo('spam')
>>> foo.bar()
'spam'
>>> from types import MethodType
>>> def newbar(self):
...     return self.x + ', yummy!'
... 
>>> foo.bar = MethodType(newbar, foo)
>>> foo.bar()
'spam, yummy!'


HTH

-- 
Arnaud
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to