授权

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函数,找到。
#这种方法没有用继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值