Gabriel Rossetti wrote: > 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? > > Thanks, > Gabriel > I also tried this :
def __registerService(atomic, self, 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) thinking that the self will be passed as the first argument of the registerService* calls and thus the second argument to the curried/partial method, but it doesn't work either, I get : Traceback (most recent call last): File "/home/xxx/Documents/Code/Python/test/test_serv.py", line 245, in test_registeration self.f.registerServiceAtomic(self.serv) exceptions.TypeError: __registerService() takes exactly 3 arguments (2 given) I don't get it... Gabriel -- http://mail.python.org/mailman/listinfo/python-list