W1ND123 发表于 2021-11-7 15:45:08

关于魔法方法的一点问题

原题:你能不能写一个 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


问题1:最后的__del__中的del self.new_file不就把文件删除了吗,题目是实现自动关闭,是哪里理解错了呢

逃兵 发表于 2021-11-7 15:48:48

删除对象时文件能自动关闭
这样你执行del的时候会先关闭文件再删除对象

W1ND123 发表于 2021-11-7 15:57:58

逃兵 发表于 2021-11-7 15:48
删除对象时文件能自动关闭
这样你执行del的时候会先关闭文件再删除对象

最后一行的del self.new_file是删除路径吗?
我看书本的例子是
class C:
    def __del__(self):
      print('i am deling')
c1 = C()
c2=c1

逃兵 发表于 2021-11-7 15:58:52

W1ND123 发表于 2021-11-7 15:57
最后一行的del self.new_file是删除路径吗?
我看书本的例子是
class C:


删除对象

W1ND123 发表于 2021-11-7 16:09:18

逃兵 发表于 2021-11-7 15:58
删除对象

谢谢,小白基础不太好,见谅
页: [1]
查看完整版本: 关于魔法方法的一点问题