python: изменить sys.stdout print на пользовательскую функцию печати

Я пытаюсь понять, как создать собственную функцию печати. (используя 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??...'

Код выше выводит это на консоль:

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

>>> 

и я хочу напечатать только одну строку:

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

Но я не могу понять, как заставить эту пользовательскую печать работать, я понимаю, что есть какая-то рекурсия, которая запускает второй вывод на консоль (я использую self.write, чтобы назначить stdout для self.write себя!)

как я могу сделать эту работу? или мой подход просто совершенно неверный ...

Ответы на вопрос(3)

Ваш ответ на вопрос