鱼C论坛

 找回密码
 立即注册
查看: 1383|回复: 4

[已解决]关于魔法方法的一点问题

[复制链接]
发表于 2021-11-7 15:45:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
原题:你能不能写一个 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:58:52
W1ND123 发表于 2021-11-7 15:57
最后一行的del self.new_file是删除路径吗?
我看书本的例子是
class C:

删除对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-11-7 15:48:48 | 显示全部楼层
删除对象时文件能自动关闭
这样你执行del的时候会先关闭文件再删除对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-7 15:58:52 | 显示全部楼层    本楼为最佳答案   
W1ND123 发表于 2021-11-7 15:57
最后一行的del self.new_file是删除路径吗?
我看书本的例子是
class C:

删除对象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-7 16:09:18 | 显示全部楼层

谢谢,小白基础不太好,见谅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-13 12:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表