巧用Python装饰器 免去调用父类构造函数的麻烦


Posted in Python onMay 18, 2012

先看一段代码:

class T1(threading.Thread): 
def __init__(self, a, b, c): 
super(T1, self).__init__() 
self.a = a 
self.b = b 
self.c = c def run(self): 
print self.a, self.b, self.c

代码定义了一个继承自threading.Thread的class,看这句

super(T1, self).__init__()

也有些人喜欢这么写

threading.Thread.__init__(self)

当然作用都是调用父类的构造函数。

写了这么久的python代码,每次写到这都有重复造轮子的感觉。刚才突然想到装饰器这个好东西,试着写了个autoInitClass来帮助pythoner脱离苦海,免去手动调用父类构造函数的麻烦。
代码如下:

def autoInitClass(OldClass): 
superClass = OldClass.mro()[1] 
class NewClass(OldClass): 
def __init__(*args): 
self = args[0] 
superClass.__init__(self) 
apply(OldClass.__init__, args) 
return NewClass

使用autoInitClass装饰器构造新类:
@autoInitClass 
class T2(threading.Thread): 
def __init__(self, a, b, c): 
#不用再写super(T2, self).__init__() 
self.a = a 
self.b = b 
self.c = c def run(self): 
print self.a, self.b, self.c

本文来自: itianda's blog ,转载请注明原文出处
Python 相关文章推荐
python实现猜数字游戏(无重复数字)示例分享
Mar 29 Python
Python 多线程实例详解
Mar 25 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
浅谈python数据类型及类型转换
Dec 18 Python
Django中针对基于类的视图添加csrf_exempt实例代码
Feb 11 Python
解决在pycharm中显示额外的 figure 窗口问题
Jan 15 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
Python tcp传输代码实例解析
Mar 18 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 Python
Python3获取cookie常用三种方案
Oct 05 Python
python中scrapy处理项目数据的实例分析
Nov 22 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
Python使用Socket(Https)Post登录百度的实现代码
May 18 #Python
写了个监控nginx进程的Python脚本
May 10 #Python
400多行Python代码实现了一个FTP服务器
May 10 #Python
使用PYTHON接收多播数据的代码
Mar 01 #Python
使用PYTHON创建XML文档
Mar 01 #Python
基于python的汉字转GBK码实现代码
Feb 19 #Python
python 装饰器功能以及函数参数使用介绍
Jan 27 #Python
You might like
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
分享php邮件管理器源码
2016/01/06 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
JQuery结合CSS操作打印样式的方法
2013/12/24 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
2018/11/28 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
numpy.transpose对三维数组的转置方法
2018/04/17 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
2019/08/27 Python
解析pip安装第三方库但PyCharm中却无法识别的问题及PyCharm安装第三方库的方法教程
2020/03/10 Python
python如何支持并发方法详解
2020/07/25 Python
Python collections模块的使用方法
2020/10/09 Python
next在python中返回迭代器的实例方法
2020/12/15 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
事假请假条范文
2014/04/11 职场文书
工会趣味活动方案
2014/08/18 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
干部作风建设年活动剖析材料
2014/10/23 职场文书
经典导游欢迎词
2015/01/26 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
2015年教务主任工作总结
2015/07/22 职场文书
中秋节主题班会
2015/08/14 职场文书
2019中秋节祝福语大全,提前收藏啦
2019/09/10 职场文书