授权:授权是包装的一个特性。授权的过程就是由新类的某部分来处理,但是已经存在的功能就授权给对象的默认属性。
import time class Open: def __init__(self,filename,mode='r',encoding='utf-8'): self.file=open(filename,mode,encoding=encoding)#self.file 中封装了open的所有方法 self.mode=mode self.encoding=encoding def write(self,line):#定义新write print('-----》',line) t=time.strftime('%Y-%m-%d %X') self.file.write('%s %s'%(t,line)) def __getattr__(self, item):#如果没有该方法,这触发getattr,然后调用self.file中的方法 print(item,type(item))# item是字符串,通过字符串来找到自己的方法,所以用getattr return getattr(self.file,item) f1=Open('a.txt','w') # print(f1.file) f1.write('abcdef ') f1.write('12345 ')
》》》》
-----》 abcdef
-----》 12345
a.txt文件中
2019-08-14 22:45:19 abcdef
2019-08-14 22:45:19 12345