On Wed, Apr 14, 2010 at 9:03 PM, Dave W. <evadef...@gmail.com> wrote: > I thought I could get away with import print_function from __future__ > (see example code below), but my re-pointed print function never gets > called.
-snip- > def __enter__(self): > print = self.printhook That redefines the print function local to __enter__. You need to change the global value of print. from __future__ import print_function from contextlib import contextmanager def printhook(obj, *args, **kwargs): __builtins__.print('['+obj+']', *args, **kwargs) @contextmanager def local_printhook(): print = printhook yield print = __builtins__.print @contextmanager def global_printhook(): global print print = printhook yield print = __builtins__.print with local_printhook(): print("Test 1") with global_printhook(): print("Test 2") >>> ================================ RESTART ================================ >>> Test 1 [Test 2] >>> -- http://mail.python.org/mailman/listinfo/python-list