微信号:grzlwx

介绍:光荣之路官方资讯

代码每天见:Python开发者最常犯的10个错误(九)

2016-02-22 22:33 光荣之路

吴老的《selenium webdriver 实战宝典》出版了!

相关阅读

Python开发者最常犯的10个错误(一)

Python开发者最常犯的10个错误(二)

Python开发者最常犯的10个错误(三)

Python开发者最常犯的10个错误(四)

Python开发者最常犯的10个错误(五)

Python开发者最常犯的10个错误(六)

Python开发者最常犯的10个错误(七)

Python开发者最常犯的10个错误(八)

10.滥用__del__方法

  比如这里有一个叫mod.py的文件:

import foo
class Bar(object):
   	    ...
    def __del__(self):
        foo.cleanup(self.myhandle)

  下面,你在another_mod.py文件里执行如下操作:

import mod
mybar = mod.Bar()

  你会获得一个AttributeError异常。

  至于为什么会出现该异常,点击这里查看详情。当解释器关闭时,该模块的全局变量全部设置为None。因此,在上面这个例子里,当__del__被调用时,foo已经全部被设置为None。

  一个很好的解决办法是使用atexit.register()代替。顺便说一句,当程序执行完成后,您注册的处理程序会在解释器关闭之前停止 工作。

  修复上面问题的代码:

import foo
import atexit

def cleanup(handle):
    foo.cleanup(handle)
class Bar(object):    def __init__(self):        ...        atexit.register(cleanup, self.myhandle)

  在程序的正常终止的前提下,这个实现提供了一个整洁可靠的方式调用任何需要清理的功能。

总结

  Python是一款强大而灵活的编程语言,并且带有许多机制和模式来大大提高工作效率。正如任何一门语言或软件工具一样,人们对其能力都会存在一个限制性地理解或欣赏,有些是弊大于利,有些时候反而会带来一些陷进。 体会一名语言的细微之处,理解一些常见的陷阱,有助于你在开发者的道路上走的更远。

<完>

(作者:juggd 来源:http://www.cnblogs.com/rrxc/p/4664462.html)

公益传播测试知识、技能与正能量!感谢作者!
分享测试生活,思考测试人生!欢迎投稿!
文章图片来自网络,如有侵权请见谅,请联系我们妥善处理。
735821166@qq.com

光荣之路
软件测试培训


官网:www.gloryroad.cn

微信公众号:gloryroadtrain

性能测试QQ群:415987441
测试招聘QQ群: 203715128
自动化3群QQ: 371211499

Python群:457561756

 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 蚂蚁金服互联网IT运维体系实践:8.59万笔\/秒是这么来的! Moving to Docker(一) 腾讯WeTest——生于游戏,精于游戏 代码篇 | Docker1.12+Swarm构建动态微服务应用 【学习分享】Liblinear之信赖域牛顿法