¿Cómo "sobrecargar" la función de impresión de Python "globalmente"?

Estoy usando python 2.6.6 y necesito sobrecargar la función de impresión predeterminada de python. Necesito hacerlo porque este código se puede usar en un sistema donde se debe usar una función incorporada para generar una salida, de lo contrario no se muestra ninguna salida.

Entonces, solo por ejemplo, si tienes un script de python como este:

from __future__ import print_function

def NewPrint(Str):
    with open("somefile.txt","a") as AFile:
        AFile.write(Str)

def OverloadPrint():
    global print
    print = NewPrint

OverloadPrint()
print("ha")

Funciona bien. La entrada a la impresión "sobrecargada" se encuentra en el archivo especificado por NewPrint.

Ahora, con eso en mente, me gustaría poder ejecutar el par de líneas anteriores y hacer una impresión para hacer lo que NewPrint hace durante toda la ejecución del script. Ahora mismo, si llamo a una función desde otro módulo que usa imprimir, usará la impresión incorporada y no la que acabo de sobrescribir. Supongo que esto tiene algo que ver con los espacios de nombres y las incorporaciones, pero mi python no es lo suficientemente bueno.

Editar:

Traté de ser simple, pero parece que esto causó más confusión ...

La función que sobrecarga la impresión se imprimirá en una GUI, por lo que no hay necesidad de preocuparse por la redirecciónSI La función está sobrecargada.

Sé que mi ejemplo no hace lo que realmente hace la función de impresión. Un mejor ejemplo de cómo estoy pensando en codificarlo es (aún no muy bueno, lo sé):

def hli_print(*args, **kw):
    """
    print([object, ...], sep=' ', end='\n', file=sys.stdout)
    """
    sep = kw.get('sep', ' ')
    end = kw.get('end', '\n')
    File = kw.get('file', sys.stdout)
    args = [str(arg) for arg in args]
    string = sep.join(args) + end
    File.write(string)
    hli_Print(string)

Desde 2 arriba, puede ver la función que tengo que usar para imprimir en la GUI "hli_Print", es una función de C ++ expuesta a través de un envoltorio de swig.

Solo usamos la biblioteca estándar y nuestros propios envoltorios de swig, también nuestros desarrolladores usan imprimir como una función (acostumbrarse a 3.X). Así que realmente no me preocupé mucho por que otro módulo llamara a imprimir y tuviera otra cosa en su lugar.

De todos los comentarios, supongo que usar una función print_ () en lugar de print () (que es lo que hacemos actualmente) puede ser lo mejor, pero me dio mucha curiosidad ver si en python sería posible hacer lo que hago. descrito