カスタム印刷関数を作成する方法を理解しようとしています。(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--->
>>>
そして私は1行だけを印刷したい:
>>>
1custom Print--->why you make 2 lines??...
>>>
しかし、このカスタム印刷を機能させる方法がわかりません。コンソールへの2番目の出力をトリガーするある種の再帰があることを理解しています(self.writeを使用して、stdoutをself.write自身に割り当てます!)
どうすればこれを機能させることができますか?または私のアプローチは完全に間違っています...