四四四四四秒 发表于 2020-12-8 19:10:36

请问最后的del的作用是什么?

题目要求为:写一个 FileObject 类,给文件对象进行包装,从而确认在删除对象时文件能自动关闭?
想问一下各位大佬,为什么在重写__del__的时候还要多加一句del self.new_file?不是已经输入del new_file后,__del__才会被调用吗?那按道理来说调用完__del__后,new_file就应该已经被删除了的才对。


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

不能懒 发表于 2020-12-8 19:25:12

销毁实例化对象,释放其占用的内存空间

笨鸟学飞 发表于 2020-12-8 22:23:49

因为默认的del只会删除对象,而没有其他操作
注意看本代码的说明。如果你要处理多个文件
例如:打开——读取——关闭——删除,这么写是很繁琐
用这个类包装好以后,只需要实例化对象——读取——删除就行了
正常的del,只做一件事,删除对象
这个类里面的del(因为重写了,所以默认的del方法被覆盖了也就不存在了)
做的是关闭——删除
你没理解重写默认方法的概念,重写以后就覆盖掉了。。。
例如__add__,默认是相加
你改写成相减以后,默认的相加就被覆盖了,就只执行改写后的相减

四四四四四秒 发表于 2020-12-29 14:53:16

笨鸟学飞 发表于 2020-12-8 22:23
因为默认的del只会删除对象,而没有其他操作
注意看本代码的说明。如果你要处理多个文件
例如:打开—— ...

谢谢解答!
页: [1]
查看完整版本: 请问最后的del的作用是什么?