redaiconglin 发表于 2022-3-26 21:10:00

请问老师我应该如何才能调用__del__这个方法谢谢了

class File:
    def __init__(self,filename='book.txt'):
      self.filename = open(filename,'wb')
    def __del__(self):
      self.filename.close()
      del self.filename

f = File('cc.txt')
我想调用def__del__这个方法删除我创建的cc.txt文件不知道如何操作谢谢老师解答。

isdkz 发表于 2022-3-26 21:18:18

class File:
    def __init__(self,filename='book.txt'):
      self.filename = open(filename,'wb')
    def __del__(self):
      self.filename.close()
      del self.filename

f = File('cc.txt')

del f   # 注意这里

redaiconglin 发表于 2022-3-26 22:10:14

isdkz 发表于 2022-3-26 21:18


谢谢老师的讲解。但我这样操作后。cc.txt这个文件还在我的文件夹里并没有被删除。是什么原因

isdkz 发表于 2022-3-26 22:15:30

本帖最后由 isdkz 于 2022-3-26 22:16 编辑

redaiconglin 发表于 2022-3-26 22:10
谢谢老师的讲解。但我这样操作后。cc.txt这个文件还在我的文件夹里并没有被删除。是什么原因

因为你用 del self.filename 只是把对象的 filename 属性删掉而已,

你想删除文件得用 os.remove:

class File:
    def __init__(self,filename='book.txt'):
      self.filename = filename
    def __del__(self):
      import os
      if os.path.exists(self.filename):
             os.remove(self.filename)
      else:
            print(f'文件{self.filename}不存在!')

f = File('cc.txt')

del f   # 注意这里

redaiconglin 发表于 2022-3-26 22:24:29

isdkz 发表于 2022-3-26 22:15
因为你用 del self.filename 只是把对象的 filename 属性删掉而已,

你想删除文件得用 os.remove:
...

感谢老师。我再回去复习一下文件。学了后面的前面的都忘记了。哈哈
页: [1]
查看完整版本: 请问老师我应该如何才能调用__del__这个方法谢谢了