巧用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中datetime常用时间处理方法
Jun 15 Python
Python中文竖排显示的方法
Jul 28 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
python实现斐波那契数列的方法示例
Jan 12 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
Apr 14 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
Python2和Python3.6环境解决共存问题
Nov 09 Python
python程序封装为win32服务的方法
Mar 07 Python
Python微医挂号网医生数据抓取
Jan 24 Python
django-filter和普通查询的例子
Aug 12 Python
基于Python爬取素材网站音频文件
Oct 21 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 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同时支持GIF、png、JPEG
2006/10/09 PHP
smarty的保留变量问题
2008/10/23 PHP
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
培养自己的php编码规范
2015/09/28 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
使用Promise封装小程序wx.request的实现方法
2019/11/13 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
Python中的tuple元组详细介绍
2015/02/02 Python
Python实现简单的可逆加密程序实例
2015/03/05 Python
python实现超简单端口转发的方法
2015/03/13 Python
利用ctypes提高Python的执行速度
2016/09/09 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
使用python将图片按标签分入不同文件夹的方法
2018/12/08 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
Pycharm 安装 idea VIM插件的图文教程详解
2020/02/21 Python
python关于倒排列的知识点总结
2020/10/13 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
大学生创业计划书的范文
2014/01/07 职场文书
会计专业自我评价
2014/02/12 职场文书
大学班级学风建设方案
2014/05/01 职场文书
幼儿教师求职信
2014/05/24 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
2015年办公室人员工作总结
2015/05/15 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL