Paul, to assign a function to an instance object (rather than a class) as a new method, use the "new" module:
===== start module prototype.py ====== ''' Example of adding methods to an instance object and a class ''' import new class Foo(object): def bar(self): print 'bar', self.__class__ # outside of class Foo, define some functions to turn into methods: def baz(self): print 'baz', self.__class__ def foobar(self): print 'foobar', self.__class__ # make some instances a = Foo() b = Foo() # make baz a method of Foo, both a and b should be able to call it Foo.baz = baz print 'baz:', Foo.baz a.baz() b.baz() # make foobar a method of a, calling b.foobar should fail a.foobar = new.instancemethod(foobar, a, a.__class__) print 'foobar:', a.foobar a.foobar() b.foobar() # fails ===== end of module ====== and when you run it: $ python prototype_based.py baz: <unbound method Foo.baz> baz <class '__main__.Foo'> baz <class '__main__.Foo'> foobar: <bound method Foo.foobar of <__main__.Foo object at 0x75990>> foobar <class '__main__.Foo'> Traceback (most recent call last): File "prototype_based.py", line 42, in <module> b.foobar() # fails AttributeError: 'Foo' object has no attribute 'foobar' More info: http://docs.python.org/lib/module-new.html HTH --Dethe _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig