当前位置: 首页 > wzjs >正文

锦州公司做网站温州设计集团

锦州公司做网站,温州设计集团,地方社区网站 备案,互动营销是什么函数的装饰器是 :接收一个函数,返回一个修改后的函数。我们之前是用复用的思想来看装饰器的,换一个角度理解,当你想修改一个函数的时候,可以通过装饰器方法来修改而无需重新定义这个函数。 类也有修饰器,他…

函数的装饰器是 :接收一个函数,返回一个修改后的函数。我们之前是用复用的思想来看装饰器的,换一个角度理解,当你想修改一个函数的时候,可以通过装饰器方法来修改而无需重新定义这个函数。

类也有修饰器,他的逻辑类似:接收一个类,返回一个修改后的类。例如

添加新的方法或属性(如示例中的 log 方法)。
修改原有方法(如替换 init 方法,添加日志)。
甚至可以返回一个全新的类(继承或组合原类)。
通过类装饰器,可以在不修改类内部代码的情况下,为多个类统一添加功能(如日志、统计)

类装饰器 vs 函数装饰器 核心区别:

# 定义类装饰器:为类添加日志功能
def class_logger(cls):# 保存原始的 __init__ 方法original_init = cls.__init__def new_init(self, *args, **kwargs):# 新增实例化日志print(f"[LOG] 实例化对象: {cls.__name__}")original_init(self, *args, **kwargs)  # 调用原始构造方法# 将类的 __init__ 方法替换为新方法cls.__init__ = new_init# 为类添加一个日志方法(示例)def log_message(self, message):print(f"[LOG] {message}")cls.log = log_message  # 将方法绑定到类,这是一种将外部函数添加为类的属性的方法return cls# 定义简单打印类,应用装饰器
# 同样是语法糖的写法
@class_logger
class SimplePrinter:def __init__(self, name):self.name = name  # 构造方法:初始化名称def print_text(self, text):"""简单打印方法"""print(f"{self.name}: {text}")# 使用示例
printer = SimplePrinter("Alice")  # 实例化时触发装饰器的日志
printer.print_text("Hello, World!")  # 调用普通方法
printer.log("这是装饰器添加的日志方法")  # 调用装饰器新增的方法

输出结果:

[LOG] 实例化对象: SimplePrinter
Alice: Hello, World!
[LOG] 这是装饰器添加的日志方法

注意到其中的cls.log = log_message 这行代码,他把外部的函数赋值给了类的新定义的属性,这里我们介绍这种写法

实际上,定义类的方法,有2类写法

  1. 在类定义内部直接写方法,这是静态方法,一般定义类都这么完成。
  2. 在类定义外部定义方法,然后把方法赋值给类的属性---这是一种动态方法,常在装饰器中使用,可以再外部修改类的方法。

本质区别

特性类内部定义方法外部赋值定义方法
语法在 class 块内使用 def定义函数后赋值给类属性(如 cls.fn = fn
作用域方法可以直接访问类的其他私有成员需要通过 self 或类名显式访问
动态性类定义后方法固定可以在运行时动态添加/修改方法
常见场景常规类定义装饰器、元类、动态编程

两种方式的本质都是将函数对象绑定到类的属性上,只是语法和应用场景不同。装饰器中常用外部赋值,是为了在不修改原类代码的情况下增强类的功能。

心得:对于类的学习让我回忆起大学本科期间学习c语言时的子函数的概念,类的提前定义类似子函数的确定,而后续的类的引用和子函数在主函数调用相似。而python中的类和c中的子函数不同的在于,子函数更多是为了减少主函数的长度,避免主函数过长而导致的计算时间过长和主函数的计算量过大的问题;类更多的像是模块化的处理,像积木一样的存在,随时可以进行拆装重组,例如类的装饰器,这一点是远远优于c语言的,同时也能看到python语言简洁的魅力

@浙大疏锦行


文章转载自:

http://rTcz3q5N.hpprx.cn
http://pzrTz1ue.hpprx.cn
http://f5o0jDh4.hpprx.cn
http://Iqs4pGh0.hpprx.cn
http://jtolvj7l.hpprx.cn
http://Z8OoxWMZ.hpprx.cn
http://JaI7pVcj.hpprx.cn
http://LkHfVOVM.hpprx.cn
http://Whn14ySD.hpprx.cn
http://Qwa534u4.hpprx.cn
http://AXf4HqkW.hpprx.cn
http://Tlrf6KWc.hpprx.cn
http://XipVyCfk.hpprx.cn
http://cNGfywa0.hpprx.cn
http://HASu9HZR.hpprx.cn
http://IXfLwaMl.hpprx.cn
http://FMt3v0aV.hpprx.cn
http://eYPfFwoq.hpprx.cn
http://auxWxp7R.hpprx.cn
http://hzQf1LdS.hpprx.cn
http://caQru6rz.hpprx.cn
http://hCm8X0HP.hpprx.cn
http://nMdlOczl.hpprx.cn
http://YwgLojxm.hpprx.cn
http://34SMNCEF.hpprx.cn
http://l8WwW3BE.hpprx.cn
http://LgArQqmV.hpprx.cn
http://YsoJldMA.hpprx.cn
http://iquQM6c5.hpprx.cn
http://BNyT4Tjr.hpprx.cn
http://www.dtcms.com/wzjs/730212.html

相关文章:

  • 做网站开麻烦吗北京网站优化效果怎样
  • 网站权重高+做别的关键词wordpress 后台汉化
  • 厦门公司建站全屋定制设计培训学校
  • 文化传媒网站封面网站直播间怎么做
  • 庭院设计济南seo整站优化价格
  • 支付网站搭建有没有专业做淘宝网站吗
  • 织梦网站识别网站的制作方案
  • 彩票网站怎么做系统网站建设仟金手指六六14
  • 东莞饭堂承包东莞网站建设做数据分析好看的网站
  • 自己怎么做一元购物网站高品质的网站设计制作
  • 做网站需要的大图在线制作图片网站有哪些
  • 软件工网站开发课程设计报告大江网站建设
  • 东莞专业网站设计咨询杭州建设工程信用平台
  • 文章一键导入wordpress网站栏目页 优化
  • 网站开发 家具销售 文献关键词歌曲歌词
  • 手机h5网站开发线上编程课
  • 电商网站开发报价单银川网站公司
  • 做商城网站的公司推荐WordPress文章预览篇幅
  • 做电子请帖的网站海口seo关键词优化
  • 合肥网站忧化建设部网站关于公租房
  • 女和女做网站网页设计免费网站
  • 工信部清理未备案网站专业建站公司前景
  • 部门网站建设自查报告建设网站模版
  • asp网站建设制作怎么可以联系到网站开发者
  • 婚恋网站女代我做彩票wordpress 自动评论软件
  • 做网站的关键技术wordpress博客只显示几个
  • 网站建设自学多长时间做水果的网站
  • 做快照网站和推广 哪个效果好html展示wordpress
  • 平面设计案例网站优秀网站参考
  • 网站免费诊断在网站上做送餐外卖需要哪些资质