首页 > 代码库 > Python3-设计模式-装饰器模式
Python3-设计模式-装饰器模式
装饰器模式
动态的给原有对象添加一些额外的职责,面向切面编程(AOP),多用于和主业务无关,但又必须的业务,如:登录认证、加锁、权限检查等
Python代码实现示例
需求点:
1.在old_func()的输出前面输出Hello,everyone!
2.在old_func()的输出后面输出Thank you!
要求:
1.不能改变原调用方式
2.要遵循开闭原则,不能修改函数内的代码
# 原有函数 def old_func(name, age): print("My name is %s,I‘m %d years old!" % (name, age)) # 原调用方式 name = "Jet" age = 18 old_func(name, age)
def before(): print("Hello,everyone!") def after(): print("Thank you!") def handle_args(before, after): def handle_func(func): def new_func(*args, **kwargs): before() func(*args, **kwargs) after() return new_func return handle_func @handle_args(before, after) # Python语法糖 def old_func(name, age): print("My name is %s,I‘m %d years old!" % (name, age)) # 原调用方式 name = "Jet" age = 18 old_func(name, age)
def handle_func(func): def new_func(*args, **kwargs): print("Hello,everyone!") func(*args, **kwargs) print("Thank you!") return new_func @handle_func def old_func(name, age): print("My name is %s,I‘m %d years old!" % (name, age)) # 原调用方式 name = "Jet" age = 18 old_func(name, age)
Python3-设计模式-装饰器模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。