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