包装:(通过继承来定制标准类型)
功能:实现对标准类型的属性的修改,或者对增加新功能
class List(list): def append(self,object): if type(object) is str: super().append(object)#调用父类的方法,修改append方法 else: print("必须是字符串") def show_medlle(self):#添加新的功能 ind=int(len(self)/2) return self[ind] ll=List("asd") ll.append(12) print(ll.show_medlle()) print(ll)
授权:(通过组合定制open方法)
import time class Filehander: def __init__(self,name,mode='r',encoding='utf8'): self.file=open(name,mode,encoding='utf8') self.mode=mode self.encoding=encoding def write(self,line): print('------------>',line) t=time.strftime('%Y-%m-%d %X') self.file.write('%s %s' %(t,line)) def __getattr__(self, item): return getattr(self.file,item) f=Filehander('ff.log','w',encoding='utf8') f.seek(0) # print(f.read()) f.write("asdasd")