手机
当前位置:查字典教程网 >脚本专栏 >python >巧用Python装饰器 免去调用父类构造函数的麻烦
巧用Python装饰器 免去调用父类构造函数的麻烦
摘要:先看一段代码:复制代码代码如下:classT1(threading.Thread):def__init__(self,a,b,c):supe...

先看一段代码:

复制代码 代码如下:

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 调用DLL操作抄表机

Python 用户登录验证的小例子

Python高级应用实例对比:高效计算大文件中的最长行的长度

python解析html开发库pyquery使用方法

Python FTP操作类代码分享

python列表去重的二种方法

python 生成目录树及显示文件大小的代码

python生成器的使用方法

Python查看多台服务器进程的脚本分享

用python实现批量重命名文件的代码

精品推荐
分类导航