|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以下是41讲课后动手题0的答案:
0. 小李做事常常丢三落四的,写代码也一样,常常打开了文件又忘记关闭。你能不能写一个 FileObject 类,给文件对象进行包装,从而确认在删除对象时文件能自动关闭?
答:只要灵活搭配 __init__ 和 __del__ 魔法方法,即可做到收放自如。
- class FileObject:
- '''给文件对象进行包装从而确认在删除时文件流关闭'''
- def __init__(self, filename='sample.txt'):
- #读写模式打开一个文件
- self.new_file = open(filename, 'r+')
- def __del__(self):
- self.new_file.close()
- del self.new_file
复制代码
我的疑惑是:
代码最后一句为啥要del self.new_file ?
调用__del__的触发条件不就是删除这个文件吗?为啥还要在里面多余加上这一句呢?
不是删除文件,是删除文件对象
文件在文件对象调用close关闭后,文件对象依旧存在,需要删除
|
|