python: cambia la impresión de sys.stdout a la función de impresión personalizada

Estoy tratando de entender cómo crear una función de impresión personalizada. (usando python 2.7)

import sys
class CustomPrint():
    def __init__(self):
        self.old_stdout=sys.stdout #save stdout

    def write(self, text):
        sys.stdout = self.old_stdout #restore normal stdout and print
        print 'custom Print--->' + text
        sys.stdout= self # make stdout use CustomPrint on next 'print'
                         # this is the line that trigers the problem
                         # how to avoid this??


myPrint = CustomPrint()
sys.stdout = myPrint
print 'why you make 2 lines??...'

El código de arriba imprime esto para la consola:

>>> 
custom Print--->why you make 2 lines??...
custom Print--->

>>> 

Y quiero imprimir solo una línea:

>>>    
1custom Print--->why you make 2 lines??...
>>>

Pero no puedo averiguar cómo hacer que esta impresión personalizada funcione, entiendo que hay algún tipo de recursión que activa la segunda salida a la consola (yo uso self.write, para asignar stdout to self.write yourself!)

¿Cómo puedo hacer que esto funcione? o mi enfoque es totalmente incorrecto ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta