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):
print('------->',line)
t= time.strftime('%Y-%m-%d %X')
self.file.write('%s %s' %(t, line))
def __getattr__(self, item):
print(item) #通过字符串找到自己的属性
return getattr(self.file,item)
# getattr(self.file,item)
f1 = Open('a.txt','w+')
f1.write('1111')
#触发__getattr__ 自己没有,但是self.file封装了所有的文件方法
#那么,发生的步骤就是 1.先在g1中找read属性,print(g1.__dict__)没有
#2.在class中找read,也没有read
#触发__getattr__,把self传给self,把read传给item;
#get到了self.file下的方法,self.file的方法是系统的,有read函数,找到。
#这种方法没有用继承。
授权
最新推荐文章于 2024-11-12 18:35:53 发布