dynamic function add to an instance of a class

News123 news1234 at free.fr
Thu Apr 29 10:31:31 CEST 2010


Peter Otten wrote:
> Richard Lamboj wrote:
> 
>> i want to add functions to an instance of a class at runtime. The added
>> function should contain a default parameter value. The function name and
>> function default paramter values should be set dynamical.
> 
>>>> class A(object):
> ...     def __init__(self, x):
> ...             self.x = x
> ...     def m(self):
> ...             return self.f(self.x)
> ...
>>>> a = A(42)
>>>>
>>>> def foo(self, a, b):
> ...     return self.x + a**b
> ...
>>>> from functools import partial
>>>> a.f = partial(foo, a, 3)
>>>> a.m()
> 109418989131512359251L
>>>> 42 + 3**42 == _
> True
> 
> Confused? The important points are
> 
> (1)
> 
> functools.partial(f, a1, a2, a3, ...)(b1, b2, b3, ...)
> 
> is equivalent to
> 
> f(a1, a2, a3, ..., b1, b2, b3, ...)
> 
> (2)
> 
> If you stick a function into an instance
> 
> a.f = f


> 
> the call
> 
> a.f()
> 
> will not automagically pass self as the first argument.
> 
The drawback would be, that
b = A(123)
b.f()
would still be called with a as bound object.


N




More information about the Python-list mailing list