python装饰器class_python的装饰器

news/2024/7/7 7:55:12

捋了一遍又一遍,终于对装饰器有了一点点的认识

基本的装饰器长这样:

defadd_news(func):def new_func(*args, **kwargs):print("这是新添加的内容")return func(*args, **kwargs)return new_func

@add_news

def my_func():

print("----something-----")

if __name__ == "__main__":

my_func()

#解释器解释时,基本装饰器实际是这样执行的:

#my_func = add_news(my_func)

#my_func 此时指向 new_func 函数

#调用 my_func() 前,解释器是会直接执行以上部分的!!!!

#my_func() 相当于 new_func()

高级一点的装饰器长这样:

1 defadd_news(arg):2 print(arg)3 defnew_dec(func):4 def new_func(*args, **kwargs):5 print("这是需要添加的内容")6 return func(*args, **kwargs)7 returnnew_func8 returnnew_dec9

10 @add_news("sixsam")11 def my_func(name="tom"):12 print("your name is {}".format(name))

#相当于:

#my_func = add_news("sixsam").(my_func)

#add_news("sixsam") ,返回了 new_dec

#new_dec(my_func) ,返回了 new_func

#注意,解释器解释到有装饰器的时候,以上部分是会直接执行的

#最后,调用 my_func() 时,

#相当于执行了 new_func()

然后,下面这个代码,就说的通了,之前一直不明白

def log(func=None):defwrapper(fun):def inner(*args, **kwargs):print('new thing')

func(*args, **kwargs)print("another something")return

returninnerif func isNone:returnwrapperelifcallable(func):returnwrapper(func)

@logdefmy_func_1():print("func_1")

@log()defmy_func_2():print("func_2")#这个装饰器,使用时,即使加上了括号,也不会报错了,两个用法一样


http://www.niftyadmin.cn/n/4136286.html

相关文章

c++继承知识总结

c继承相关知识总结 一 继承关系:public protected private 不矫情 直接贴代码 举例代码主要从: a. 基类成员对其对象的可见性: 只有public成员可以访问 b. 基类成员对派生类的可见性: c. 基类成员对派生类对象的可见性&#xf…

python字符串小数转化整数_Python字符串、整数、和浮点型数相互转换实例

前言序锦 在编程中,经常要用到字符串的相互转换,现在在这里记录一下Python里面的字符串和整数以及浮点型数之间是如何进行相互转换的。 int(str)函数将符合整数的规定的字符串转换成int型的 float(str)函数将符合浮点型的规定的字符串转换成float型的 st…

《编程之法》1.3字符串的全排列,组合,重复排列,八皇后问题

题目描述:输入一个字符串,打印出该字符串中字符的所有排列,例如输入"abc",输出"abc","acb","bac","bca","cab","cba" 解法一:递归实现 类似于…

强强学Android_自定义Button

自定义开关 学习笔记如有错误之处请大家帮忙指出纠正__谢谢-------------------------------------------------------------------------------------------------------------------------------------------难点总结 : 一个自定义控件 即实现了触摸事件 又实现了点击事件 ,…

为什么构造函数不可以声明为虚函数,而析构函数可以

构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。 不建议在构造函数和析构函数里面调用虚函数。 构造函数不能声明为虚函数的原因是: 1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为…

什么情况下c++编译器会合成默认构造函数

问题:对c初学者来说存在一个误区,如果类没有定义任何构造函数,编译器会自动生成默认的构造函数。 注意:这种说法是错误的。 正确的说法:惟有默认构造函数”被需要“的时候编译器才会合成默认构造函数。 那什么情况…

halcon显示坐标_初识halcon(一)

halcon介绍HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。它节约了产品成本,缩短了软件开发周期——HALCON灵活的架构便于机器视觉,医学图像和图像分析应用的快速开发。在欧洲以及日本的工…

【PMP认证考试之个人总结】第 7 章 项目质量管理

第 7章 项目质量管理 《PMP个人备考笔记(全篇)》下载 7.1 综述 1.六位管理大师的观点区分 ①PDCA循环:由休哈特定义,戴明改进并完善 PDCA 环(14 条原则)即持续改进; ②朱兰:质量就是适于使用&am…