第十五节:包装和授权

包装:(通过继承来定制标准类型)

功能:实现对标准类型的属性的修改,或者对增加新功能

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")

猜你喜欢

转载自www.cnblogs.com/sxdpython/p/12723626.html
今日推荐