dynamic function add to an instance of a class
Peter Otten
__peter__ at web.de
Thu Apr 29 04:13:01 EDT 2010
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.
Peter
More information about the Python-list
mailing list