叱咤风云2333 发表于 2020-5-14 16:44:37

41讲课后题,关闭文件后为何要删除文件

0. 小李做事常常丢三落四的,写代码也一样,常常打开了文件又忘记关闭。你能不能写一个 FileObject 类,给文件对象进行包装,从而确认在删除对象时文件能自动关闭?

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


第9行已经完成了关闭文件的任务,第10行为什么还要进行删除操作,这里删除掉的是什么?

wuqramy 发表于 2020-5-14 16:46:05

因为这是del魔法方法呀
删掉的就是那个文件

叱咤风云2333 发表于 2020-5-14 16:53:30

wuqramy 发表于 2020-5-14 16:46
因为这是del魔法方法呀
删掉的就是那个文件

同学又看见你了!上次也是你回答我的问题来的哈哈哈哈,所以为什么不是del self 呢?是因为del self会直接把源文件删除吗?

wuqramy 发表于 2020-5-14 16:56:06

叱咤风云2333 发表于 2020-5-14 16:53
同学又看见你了!上次也是你回答我的问题来的哈哈哈哈,所以为什么不是del self 呢?是因为del self会直 ...

就是把它打开的那个文件给删掉

叱咤风云2333 发表于 2020-5-14 17:01:24

wuqramy 发表于 2020-5-14 16:56
就是把它打开的那个文件给删掉

明白了,是因为重写了__del__方法,所以在里面要加上删除命令?小甲鱼举的例子导致我以为,不管怎么重写,__del__都会自动删除文件{:10_249:}
页: [1]
查看完整版本: 41讲课后题,关闭文件后为何要删除文件