On Jan 29, 8:51 pm, Brian Allen Vanderburg II <brianvanderbu...@aim.com> wrote: > You can also create a bound method and manually bind it to the > instance. This is easier > > import types > a.f2 = types.MethodType(f1, a) > > a.f2() # prints object a
Ah thanks, that is what I was looking for. I missed that because following types.MethodType in the docs is: types.UnboundMethodType An alternate name for MethodType Which made me think it was a type for UnboundMethods (aka functions). This: >>> help(types.UnboundMethodType) clears it up for me, but the docs are rather confusing. > These may work for most uses, but both have a problem that happens if > you need to make a copy of the instance. When you copy it, the copies > 'f1' will still call the function but using the old object > > a.f1() # prints object a > b = copy.copy(a) > b.f1() # still prints a > Ugh, that is a problem. I guess that means pickling won't work either.... Nope, "TypeError: can't pickle instancemethod objects". So does these mean there is no way to create a method on an instance at runtime that behaves just like a method that originated from the instance's class? -Brad -- http://mail.python.org/mailman/listinfo/python-list