On Wed, Jun 27, 2012 at 11:59 PM, lars van gemerden <l...@rational-it.com> wrote: > Hi all, > > I have some trouble with the following question: Let say i have the > following classes: > > class A(object): > def __init__(self): > self.name = 'a' > def do(self): > print 'A.do: self.name =', self.name > > class B(object): > def __init__(self): > self.name = 'b' > > > > The question is: How do i move the 'do' method from A to b (resulting > in printing "A.do: self.name = b")? > > I have tried (with a = A() and b B()): > > B.do = types.MethodType(A.do, b) #Error > > and stuff like: > > b.do = a.do > b.do() > > But either i get an error or b.do() prints "A.do: self.name = a", so > the self parameter of a.do is stored somehow in the method. > > In other words, how do i unbind 'do' from a/A and bind it to b (the > instance)? > > Cheers, Lars >
Is there any particular reason you can't just have B be a subclass of A? You could do b.do = types.MethodType(A.do.im_func, b, B) but there's no point in re-inventing the wheel. -- http://mail.python.org/mailman/listinfo/python-list