On Oct 14, 1:50 pm, hofer <[EMAIL PROTECTED]> wrote: > Hi, > > I have multiple objects all belonging to the same class > (which I didn't implement and whose code I don't want to modify) > > Now I'd like to change one method for one object only (after it has > been created) without adding any overhead > to the call of the other object's methods. > > Is this possible? > > Example > ##### This is NOT what I'd like to do > ##### as it overwrites the method for all objects of this class > o1 = aclass() > o2 = aclass() > # call original method > o1.method() > o2.method() > # overwrite the method for the entire class > aclass.method = mymethod > o1.method() # now new method > o2.method() # now new method > > ####### What doesn't work, but what I'd like to do > o1 = aclass() > o2 = aclass() > # call original method > o1.method() > o2.method() > # overwrite the method for the entire class > o1.method = mymethod > o1.method() # now new method > o2.method() # still old method > > thanks for any pointers.
Please post the actual code that doesn't work. The following works as expected: >>> class A(object): ... def foo(self): return 'Original' ... >>> a = A() >>> b = A() >>> a.foo() 'Original' >>> b.foo() 'Original' >>> b.foo = lambda: 'Modified' >>> a.foo() 'Original' >>> b.foo() 'Modified' HTH, George -- http://mail.python.org/mailman/listinfo/python-list