python中的装饰器

python中的装饰器

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

    python中的装饰器能够装饰函数,也能够装饰类,功能是向函数或者类加入�一些功能。类似于设计模式中的装饰模式,它能够把装饰器的功能实现部分和装饰部分分开,避免类中或者函数中冗余的代码。

装饰器装饰函数:

def decrator(f1):
	def newf():
		print "strings will be connected:"
		print f1();
	return newf;
	
@decrator
def strconnect():
	x=raw_input("input the first string");
	y=raw_input("input the second string");
	return x+y;
	
strconnect();

    上面的代码,对函数strconnect加了装饰器,在装饰器decrator生成了新的函数newf,newf的函数体调用了f1函数,而且添加�了装饰功能。

装饰器装饰类:

def decrator(obj):
	class newclass():
		def __init__(self,s):
			self.tmp=obj(s);
		def show(self):
			print "apple is good for your health";
			print self.tmp.show();
	return newclass;

@decrator	
class apple():
	def __init__(self,s):
		self.str=s;
	def show(self):
		return self.str;	
t=apple('an apple a day keeps a doctor away');
t.show();

    与装饰一个函数类似,装饰器也能够装饰类,装饰器decrator中产生了新的类newclass,newclass的构造方法多了一个參数s,用于生成被装饰的类的对象,self.tmp=obj(s)即实现了这个功能。装饰器中的show函数也是调用了被装饰的类的show函数,而且添加�了装饰代码。

    除了自己定义的装饰器,python还提供了自带的装饰器,如静态方法和类方法就是通过装饰器来实现的,有关静态方法和类方法的说明,在这里:python静态方法类方法

    装饰器装饰一个函数就可以返回一个新的函数,装饰一个类就可以返回一个新的类,扩展了原有函数或者类的功能。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/118681.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 使用JWT实现单点登录(完全跨域方案)

    首先介绍一下什么是JSONWebToken(JWT)?官方文档是这样解释的:JSONWebToken(JWT)是一个开放标准(RFC7519),它定义了一种紧凑且独立的方式,可以在各方之间作为JSON对象安全地传输信息。此信息可以通过数字签名进行验证和信任。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。虽然JWT可以加密以在各方之间提供保密…

  • 【企业】掌握理查德·费曼学习法,提高学习效率

    【企业】掌握理查德·费曼学习法,提高学习效率强大的学习能力,可以让你更好地应对复杂多变的世界!1、理查德·费曼理查德·菲利普斯·费曼(RichardPhillipsFeynman),美国犹太裔理论物理学家,量子电动力学创始人之一,纳米技术之父。1965年获得诺贝尔物理学奖,从没有人怀疑过他超强、早熟的学习能力:小学刚毕业,他就开始学习初等微积分,在中学,他就学习了狭义相对论——要知道爱因斯坦提出狭义相对论的《论动体的电动力…

  • php getrealpath,java_java 获取路径的各种方法(总结),(1)、request.getRealPath(“/”);//不推 – phpStudy…

    php getrealpath,java_java 获取路径的各种方法(总结),(1)、request.getRealPath(“/”);//不推 – phpStudy…java获取路径的各种方法(总结)(1)、request.getRealPath(“/”);//不推荐使用获取工程的根路径(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径,这个方法比较好用,可以直接在servlet和jsp中使用(3)、request.getSession().getServletContext().getRe…

  • sqlSessionFactory创建

    sqlSessionFactory创建前言分析上篇文章的整合的配置文件,我们可以知道配置的bean是成树状结构的,而在树的最顶层是类型为org.mybatis.Spring.SqlSessionFactoryBean的bean,它将其他相关的bean组装在了一起,那么我们的分析就从此类开始。sqlSessionFactory创建对于配置文件的读取,Spring是通过org.mybatis.Spring.SqlSessi…

  • 阿里云MQTT服务器搭建与测试(全图文,非常详细)「建议收藏」

    阿里云MQTT服务器搭建与测试(全图文,非常详细)「建议收藏」阿里云MQTT服务器搭建与测试一、MQTT概念二、阿里云MQTT服务器搭建1阿里云平台注册及认证2添加平台2创建产品与设备获取MQTT连接相关信息三、MQTT.fx测试1MQTT.fx下载及安装2配置登录信息3从MQTT.fx上报数据到阿里云服务器4阿里云下发数据到MQTT.fx一、MQTT概念MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议,该

  • javascript 手机号码正则表达式验证函数

    javascript 手机号码正则表达式验证函数随着手机号码段的不断增加,以前网上的手机号码验证函数都不能那么完美的支持了,这里脚本之家编辑特为大家准备的一个简单的正则与手机验证的函数分析。functioncheckMobile(){varsMobile=document.mobileform.mobile.valueif(!(/^1[3|4|5|8][0-9]\d{4,8}$/.test(sMobile))

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号