import wrap def pre(self, *args, **kwds): print "hello: %s, %s" % (args, kwds) def post(self, *args, **kwds): print "world: %s, %s" % (args, kwds) class X(object): def Foo(self, *args, **kwds): try: print kwds['somearg'] except: print "No 'somearg' argument given" Foo = wrap.wrapmethod(Foo, pre, post) x = X() x.Foo(42, bar=33) x.Foo(somearg="Hello there")