授权:是包装的一个特性
包装一个类型通常是对已存在的类型的一些定制,这种做法可以新建,修改或删除原有产品的功能.其他的则保持原样.
授权的过程,即是所有更新的功能都是由新类的某部分来处理,但已存在的功能就授权给对象的默认属性.
import time
class Open:
def __init__(self,filename,mode='r',encoding='utf-8'):
self.file = open(filename,mode,encoding=encoding)
self.mode = mode
self.encoding = encoding
def write(self,line):
t = time.strftime('%Y %m %d %X')
self.file.write('%s %s'%(t,line))
def __getattr__(self, item):
return getattr(self.file,item) #self.file是类open的实例,可以找到open的属性item,并获得属性的值
f1 = Open('name','w+')
f1.write('内存不足')
f1.seek(0)
print(f1.read())
输出:
2018 12 05 23:47:39 内存不足
文件内容:
2018 12 05 23:47:39 内存不足