Consider this ServicesManager class that handles some services (basically, a function identified by a name): class ServicesManager: def __init__(self): self.services = dict() def add_service(self,name,func): self.services[name] = func def call_service(self,name): self.services[name](name) This is a MCVE, to help asking my question. ServicesManager is actually a ROS Node class. It cannot be modified to find an answer to my question. Here is a class using ServicesManager with an example of usage: class B(ServicesManager): def __init__(self): super(B, self).__init__() self.add_service("foo",self.service_foo) self.add_service("bar",self.service_bar) def service_foo(self,name): # do something print(name) def service_bar(self,name): # do something print(name) b = B() b.call_service("foo") b.call_service("bar") The service_foo and service_bar # do something part has very common piece of code that I would like to factorize, I'd like an object to be passed to a generic function. The code would look like this: class B(ServicesManager): class helper_object_foo(): def func1(self,name): pass def func2(self): pass class helper_object_bar(): def func1(self,name): pass def func2(self): pass def __init__(self): super(B, self).__init__() #self.add_service("foo",self.service_foo) #self.add_service("bar",self.service_bar) # How to call add_service??? self.add_service("foo",?? self.service_generic_func using helper_object_foo()) self.add_service("bar",?? self.service_generic_func using helper_object_bar()) def service_generic_func(self,name,helper_object): helper_object.func1(name) helper_object.func2() print(name) Is there a way to do this? What would be the good syntax for calling add_service? May a lambda help? Continue reading...