Skip to main content


Showing posts from July, 2005

Python: Wrapping Methods Via a Backdoor

Often, when you write a server in Python, you include a backdoor. The backdoor is something that you can telnet to from localhost, and it's basically a Python shell. Within the Python shell, you can snoop around the running program. It's cool. Now, suppose you want to insert some code to debug a problem. Suppose you want to intercept all method calls to a certain class. (If you're a hardcore Python hacker, feel free to stop reading, but many other people will find this interesting.) >>> class C: ... """This is some pre-existing class within the running application.""" ... def f(self, num): print "I got called with:", num ... >>> >>> def wrap(f): ... """This is a function decorator. inner below is the wrapper itself.""" ... def inner(*args, **kargs): ... print "I'm about to call %s with %s %s." % ... (f.__name__, `args[1:]`