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 -- http://mail.python.org/mailman/listinfo/python-list