Partial Function Application and implicit self problem
Diez B. Roggisch
deets at nospam.web.de
Thu Mar 27 04:27:44 EDT 2008
Gabriel Rossetti schrieb:
> Hello,
>
> I am using Partial Function Application in a class and I've come up with
> a problem, when the method is called it tries to pass "self" to the
> curried/partial function, but this should be the first argument in
> reality, but since the function is curried, then the self gets passed as
> the second argument. Here is the code :
>
> def __registerService(self, atomic, service):
> def reg(service):
> # registers the service
> ...
> if(atomic):
> # Lock the service dict and register the service, then unlock it
> self.__mutex.lock(reg, service)
> self.__mutex.unlock()
> else:
> reg(service)
> registerServiceAtomic = partial(__registerService, True)
> registerServiceNonAtomic = partial(__registerService, False)
>
> I should pass self when applying partial, but then I can't do that since
> self is not available there. Does anyone have any ideas?
Use a bound-method instead. That has the self already bound to it. Like
this:
class Foo:
def m(self, arg):
print arg
f = Foo()
partial(f.m, 10)
Diez
More information about the Python-list
mailing list