Steven D'Aprano wrote:
On Sat, 14 Aug 2010 16:05:05 -0700, bvdp wrote:

<snip>

def error(s):
    print "Error", s
    sys.exit(1)
<snip>
This general technique is called "monkey patching". <snip>
You can either manually exit from your own error handler:

def myerror(s):
    print "new error message"
    sys.exit(2)


or call the original error handler:


def myerror(s):
    print "new error message"
    foo._error(s)


That second technique requires some preparation before hand. In module foo, after defining the error() function, you then need to create a second, private, name to it:

_error = error


Small point. The OP's request was that he not modify the called module, which is why he was considering monkey-patching. And you can readily avoid adding that line to the file. Just do something like this:

import foo
_olderror_func = foo.error

def myerror(s)
     print "new error message"
     _olderror_func(s)

DaveA

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to