2019年8月14日 组合的方式完成授权

  授权:授权是包装的一个特性。授权的过程就是由新类的某部分来处理,但是已经存在的功能就授权给对象的默认属性。

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\n')
f1.write('12345\n')

》》》》

-----》 abcdef

-----》 12345

a.txt文件中

2019-08-14 22:45:19 abcdef
2019-08-14 22:45:19 12345
posted @ 2019-08-14 21:22  小圣庄  阅读(90)  评论(0编辑  收藏  举报