In article <9kpeft$kbm$1 / slb4.atl.mindspring.net>, "Andrew Dalke"
<dalke / acm.org> writes:

[...]
| She chose Tcl (with an
| object extension) over Python because Python's ability to add
| new methods is not obvious[*] and because existing instances
| are not updated with the new class definitions

you can do this:

>>> class Spam:
....     def eat(self):
....         print 'yum'
.... 
>>> spam = Spam()
>>> spam.eat()
yum
>>> 
>>> def new_eat(self):
....     print 'yech'
.... 
>>> Spam.eat = new_eat
>>> 
>>> spam.eat()
yech

if you want it to attach the new method to the same class in face of
inheritance, you need "spam.eat.im_class.eat = new_eat" - you could
wrap it in a function if that look too much like a magic incanatation
for your audience.

if you actually want to replace the underlying classes of all
instances, you could probably cook something up with the weakref
module and calling a registration function in __init__...

  -- erno