为什么提示找不到flush()方法
import sys
class Logger:
def __init__(self,file):
self.terminal = sys.stdout
self.log = open (file,"w+")
def write(self,message):
self.terminal.write(message)
self.log.write(message)
self.log.flush()
sys.stdout=Logger('log_file.txt')
print("yes")
按如上的写法,可以实现同时输出yes 到终端和屏幕。
但是会报错: AttributeError: ‘Logger’ object has no attribute ‘flush’
除非给Logger加一个flush的方法。
还是有点蒙,self.log 已经被定义为一个文件,应该已经包含 flush方法才对,为什么会提示Logger没有flush方法?
sys.stdout
需要一个类似文件的对象, 现在指定为Logger
对象, 它会调用它的write
以及flush
方法, 事实上,Logger
确实没有定义flush
方法.