|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 payton24 于 2017-12-6 14:19 编辑
按照标准答案,使用del函数只是删除了实例化对象的引用。
对于文件的删除,不是应该使用os.remove(name)吗?
如下文,标准答案代码为:
- class FileObject:
- '''对文件对象进行包装,确认在删除时文件已关闭'''
- def __init__(self, filename='sample.txt'):
- #以读写模式打开文件
- self.new_file = open(filename,'r+')
- def __del__(self):
- print('调用del方法')
- self.new_file.close()
- print('已关闭文件')
- del self.new_file
复制代码
IDLE上运行:
a=FileObject(filename='F:/f3.txt')
del a
结果:只删除了a这个实例化对象。
其实self.new_file.close()这个语句即使不执行,也不妨碍a这个实例化对象的删除。
后文为自己调整后的代码,调用del a即可删除文件。
删除文件不是应该这样子写吗?
- import os
- class FileObject:
- '''对文件对象进行包装,确认在删除时文件已关闭'''
- def __init__(self, filename='sample.txt'):
- #以读写模式打开文件
- self.new_file = open(filename,'r+')
- self.path=filename
- def __del__(self):
- print('调用del方法')
- self.new_file.close()
- print('已关闭文件')
- os.remove(self.path)
复制代码
IDLE上运行:
a=FileObject(filename='F:/f3.txt')
del a
结果:删除了a指定的文件。
题目的要求是删除对象的时候保证关闭文件,没说要把文件也删除了
|
|