Bruno Desthuilliers wrote: > Gabriel Rossetti a écrit : >> 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? > > registerServiceAtomic = partial(__registerService, atomic=True) > registerServiceNonAtomic = partial(__registerService, atomic=False) > > Caveat: you'll have to either invert the order of the atomic and > service params, or call the partials with named arg for service. > > HTH > Ok, thanks, I didn't know you could do that, I though partial was always left to right (I had read that about curry)
Gabriel -- http://mail.python.org/mailman/listinfo/python-list