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

时间:2022-11-25 03:04:52 作者:公孙乌龙白桃 综合材料 收藏本文 下载本文

“公孙乌龙白桃”通过精心收集,向本站投稿了3篇巧用Python装饰器 免去调用父类构造函数的麻烦,以下是小编整理后的巧用Python装饰器 免去调用父类构造函数的麻烦,希望能够帮助到大家。

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

最近更 新

Python群发邮件实例代码

python中将阿拉伯数字转换成中文的实现代

python函数缺省值与引用学习笔记分享

python zip文件 压缩

python 字典(dict)遍历的四种方法性能测试

python中文乱码的解决方法

理解python多线程(python多线程简明教程

Python使用稀疏矩阵节省内存实例

从零学Python之入门(二)基本数据类型

使用setup.py安装python包和卸载python包

热 点 排 行

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 文件和路径操作函数小结

python 字符串split的用法分享

篇2:python使用装饰器和线程限制函数执行时间的方法

作者:lele 字体:[增加 减小] 类型:

这篇文章主要介绍了python使用装饰器和线程限制函数执行时间的方法,主要涉及timelimited函数的使用技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了python使用装饰器和线程限制函数执行时间的方法,分享给大家供大家参考。具体分析如下:

很多时候函数内部包含了一些不可预知的事情,比如调用其它软件,从网络抓取信息,可能某个函数会卡在某个地方不动态,这段代码可以用来限制函数的执行时间,只需要在函数的上方添加一个装饰器,timelimited(2)就可以限定函数必须在2秒内执行完成,如果执行完成则返回函数正常的返回值,如果执行超时则会抛出错误信息。

# -*- coding: utf-8 -*-from threading import Threadimport timeclass TimeoutException(Exception): passThreadStop = Thread._Thread__stop#获取私有函数def timelimited(timeout): def decorator(function): def decorator2(*args,**kwargs):class TimeLimited(Thread): def __init__(self,_error= None,): Thread.__init__(self) self._error = _error def run(self): try:self.result = function(*args,**kwargs) except Exception,e:self._error =e def _stop(self): if self.isAlive:ThreadStop(self)t = TimeLimited()t.start()t.join(timeout)if isinstance(t._error,TimeoutException): t._stop() raise TimeoutException(‘timeout for %s‘ % (repr(function)))if t.isAlive(): t._stop() raise TimeoutException(‘timeout for %s‘ % (repr(function)))if t._error is None: return t.result return decorator2 return decorator@timelimited(2)def fn_1(secs): time.sleep(secs) return ‘Finished‘if __name__ == “__main__”: print fn_1(4)

希望本文所述对大家的Python程序设计有所帮助,

篇3:Python中使用装饰器和元编程实现结构体类实例

Python中使用装饰器和元编程实现结构体类实例,本文的方法算是一种Python的黑魔法技术,并非Python的常规写法,需要的朋友可以参考下

Ruby中有一个很方便的Struct类,用来实现结构体,这样就不用费力的去定义一个完整的类来仅仅用作访问属性。

代码如下:

class Dog < Struct.new(:name, :age)

end

fred = Dog.new(“fred”, 5)

printf “name:%s age:%d”, fred.name, fred.age

##name:fred age:5

Python3.4中也可以这么干,但写法很累赘。其中包含self.name = name 这种很烦人的写法。

代码如下:

class Dog(object):

def __init__(self, name, age):

self.name = name

self.age = age

fred = Dog(“fred”, 5)

print(‘name:{name} age:{age}‘.format(name=fred.name, age=fred.age))

##name:fred age:5

想到我大Python是无所不能的,有没有一种简化结构体类属性定义的方法呢?答案肯定是有的,

在补习了一些Python黑魔法技术后,我想到利用装饰器函数和元编程技术来实现。

代码如下:

def struct(*name):

“”“ 装饰器函数

用途:用于在类定义中,自动设置self.value = value

”“”

def decorator(func):

def wrapper(*args, **kw):

for i in range(len(name)):

setattr(args[0], name[i], args[i+1])

return func(*args, **kw)

return wrapper

return decorator

class Dog(object):

@struct(‘name‘,‘age‘)  #黑魔法所在!

def __init__(self, *all_value):

pass

fred = Dog(“fred”, 5)

print(‘name:{name} age:{age}‘.format(name=fred.name, age=fred.age))

##name:fred age:5

要注意的是,这种写法会造成代码结构的不清晰。

Python中实现结构相似的函数调用方法

Python中的getopt函数使用详解

python中实现php的vardump函数功能

Python在Windows和在Linux下调用动态链接库的教程

巧用Python装饰器 免去调用父类构造函数的麻烦(精选3篇)

欢迎下载DOC格式的巧用Python装饰器 免去调用父类构造函数的麻烦,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
推荐文章
最新范文
点击下载本文文档