<posted & mailed> Hey again Steven, I'm still having problems...
Steven Bethard wrote: > Something like this might work: > > py> class C(object): > ... def func_a(self): > ... print "func_a" > ... def func_b_impl(self): > ... print "func_b" > ... raise Exception > ... def __getattr__(self, name): > ... func = getattr(self, '%s_impl' % name) > ... wrapped_func = self._impl_wrapper(func) > ... setattr(self, name, wrapped_func) > ... return wrapped_func > ... def _impl_wrapper(self, func): > ... def wrapper(*args, **kwargs): > ... try: > ... return func(*args, **kwargs) > ... except: > ... print "entered except" > ... raise > ... return wrapper > ... > py> c = C() > py> c.func_a() > func_a > py> c.func_b() > func_b > entered except > Traceback (most recent call last): > File "<interactive input>", line 1, in ? > File "<interactive input>", line 15, in wrapper > File "<interactive input>", line 6, in func_b_impl > Exception > > The idea here is that __getattr__ is called whenever the class doesn't > have a particular function. The __getattr__ method then tries to find a > corresponding _impl function, wraps it with appropriate try/except code, > and returns the wrapped function. The problem is: >>> c.func_b.__name__ 'wrapper' That messes up SOAPpy's RegisterFunction() method which apparently depends on the __name__ of the function to publish it as an available SOAP function. Any suggestions on how to change the name of c.func_b to 'func_b' instead of 'wrapper'? > HTH, > STeVe Thanks a bunch, -- C -- http://mail.python.org/mailman/listinfo/python-list