How about using a class, with __call__, as a wrapper instead of the function itself?
class FunctionWrapper(object): def __init__(self, cls, function): self._function = function self._cls = cls def __call__(self, *args, **kwargs): REQUEST = self.REQUEST SESSION = REQUEST.SESSION dbConnection = self._cls.getDBConnection() logger = self._cls.getLogger() trackStatsHere() # set up some local variables here # change some global variables here try: return self._function(self._cls, *args, **kwargs) except: raise "handle the error here" finally: dbConnection.close() class User(object): def __init__(self): def View(cls, self, localvariables): #Needs the cls argument before self to take the FunctionWrapper first argument myHtmlDoc = """make the htmldocument here using all of the previous variables""" # play with data here return myHtmlDoc self.View = FunctionWrapper(self, View) def Edit(cls, self): #Ditto myHtmlDoc = """make the htmldocument here using all of the previous variables""" # play with data here return myHtmlDoc self.Edit = FunctionWrapper(self, Edit) #the rest of the class -- http://mail.python.org/mailman/listinfo/python-list