栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python如何确保在模块死亡之前调用对象的__del __()方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python如何确保在模块死亡之前调用对象的__del __()方法?

正如我们之前告诉您的那样,

__del__
当解释器退出时,您确实不应依赖于被调用。有两种方法可以正确执行此操作:

首先是

atexit

import osimport atexitclass Logger(object):       def on_exit(self):        print "os: %s." % oslogger = Logger()atexit.register(logger.on_exit)

这样可以确保记录器在退出时完成。


*多读一些问题,因为您打算将单个实例绑定到定义实例类的模块,所以下面的上下文管理器解决方案对此不起作用,因为无法将整个实例留在上下文中执行程序。您需要使用

atexit.register
。但是,从程序设计的角度来看,与
atexit.register
重组代码允许的情况相比,我更希望使用上下文管理器来管理我的资源。

第二种 (更好的*)
方法是使您的类成为上下文管理器,该管理器在退出上下文时执行清除代码。然后您的代码将如下所示:

import osclass Logger(object):    def __enter__(self):        return self    def __exit__(self, exc_type, exc_value, traceback):        print "os:",str(os)with Logger() as logger:    #do something ...


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659777.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号