Adding method from one class to another class or to instance of another class

Terry Reedy tjreedy at udel.edu
Fri Jul 24 15:17:15 EDT 2009


marekw2143 wrote:
> Hi,
> 
> I have one class (A) that has defined method createVars. I would like
> to add that method to class B
> The code looks like this:
> 
> 
> class A(object):
>    def createVars(self):
>       self.v1 = 1
>       self.v2 = 3
>       pass
> 
> class B(object):
>    pass
> 
> 
> I don't want to use inheritance (because class A has many methods
> defined that class B doesn't need).
> When I try the folloowing:
> 
> 
> B.createVars = C.createVars

  you meant A.createVars

> B().createVars()
> 
> 
> then the following error occurs:
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> TypeError: unbound method createVars() must be called with A instance
> as first argument (got nothing instead)

In 3.1, your example works fine. The difference is that in 2.x, 
B.createVars is a method wrapperthat wraps the function, whereas in 3.1, 
it is the function itself. For 2.x, you need to extract the function 
from the wrapper. It is im_func or something like that. Use 
dir(B.createVars) to check for sure.

> How can I solve this problem?

Terry Jan Reedy




More information about the Python-list mailing list