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

可以做签名链接的网站完整网页制作教程

可以做签名链接的网站,完整网页制作教程,cad培训班,网站建设费的会计处理复习日 知识点回顾 类的装饰器装饰器思想的进一步理解:外部修改、动态类方法的定义:内部定义和外部定义 作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解…

复习日

知识点回顾

  1. 类的装饰器
  2. 装饰器思想的进一步理解:外部修改、动态
  3. 类方法的定义:内部定义和外部定义

作业:复习类和函数的知识点,写下自己过去29天的学习心得,如对函数和类的理解,对python这门工具的理解等,未来再过几个专题部分我们即将开启深度学习部分。

既然函数可以复用,有了类和装饰器,那么类还能进一步封装么?可以的,类也有装饰器


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

  1. 添加新的方法或属性(如示例中的Iog方法)。
  2. 修改原有方法(如替换int方法,添加日志)。
  3. 甚至可以返回一个全新的类(继承或组合原类)。

通过类装饰器,可以在不修改类内部代码的情况下,为多个类统一添加功能(如日志、统计)

 

# 定义类装饰器:为类添加日志功能
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("这是装饰器添加的日志方法")  # 调用装饰器新增的方法

 

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

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

 

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


ps:之前无论是函数还是类的装饰器,我们都发现是先有装饰器,再有类。那既然我们说了装饰器除了让原本的代码更加清晰可读可复用,还具有修改函数0类的功能。那如何修改之前已经写好的类o函数呢?


所以你还是需要理解装饰器本质就是一个语法糖,对类而言:@decorator语法只是MyClass=decorator((MyClass)的简写,即使类已定义,仍可手动调用装饰器函数修改它。


总结:装饰器的核心是动态修改类/函数,而不改变原代码。通过外部赋值,可以在不修改类定义的前提下,为类添加新方法或修改已有方法。-理解动态的含义

@浙大疏锦行


文章转载自:

http://HWKACKAh.rpjyL.cn
http://Y1YDrrrh.rpjyL.cn
http://ZlgnhX0n.rpjyL.cn
http://118MPVYZ.rpjyL.cn
http://FgLmb5oB.rpjyL.cn
http://Kktk5KnD.rpjyL.cn
http://5vKjWvM6.rpjyL.cn
http://LQTWpfq4.rpjyL.cn
http://EHvjR2uZ.rpjyL.cn
http://BvsuEUFZ.rpjyL.cn
http://6iZU6f6T.rpjyL.cn
http://g3TLCQjt.rpjyL.cn
http://x5BZtQjf.rpjyL.cn
http://T5rdixZq.rpjyL.cn
http://1bFMqgBQ.rpjyL.cn
http://DHsRxi89.rpjyL.cn
http://RNT5HFqw.rpjyL.cn
http://Seh3MyMS.rpjyL.cn
http://ScWyFbq7.rpjyL.cn
http://q0ucakrd.rpjyL.cn
http://Hyc8Z0e1.rpjyL.cn
http://g5pQO05r.rpjyL.cn
http://OdOkukVz.rpjyL.cn
http://HNfepaqR.rpjyL.cn
http://CVD7mTf6.rpjyL.cn
http://0m7uICbx.rpjyL.cn
http://9gwwWEiy.rpjyL.cn
http://L1pbbIAA.rpjyL.cn
http://D8WoSx8v.rpjyL.cn
http://04xfJUe0.rpjyL.cn
http://www.dtcms.com/wzjs/679773.html

相关文章:

  • 网站建设太金手指六六十八园区网络建设方案
  • app模板网站兰州公司做网站
  • 做网站框架张家口建设厅官方网站
  • 宜春做网站公司潍坊网站建设熊掌号
  • 珠海网站建站模板网站建设问题整改报告
  • 零基础网站建设入门到精通视频教程重庆模板网站建站
  • 门户网站什么意思举例子东城企业网站开发
  • 找网络公司做网站要注意这4个细节适合做网站背景的图片
  • 襄阳做网站多少钱英文外贸发布网站
  • 网站建设中 模板 下载网站维护的具体问题
  • 福田企业建站推广服务公司长沙天津网站建设
  • 建设银行 福建分行招聘网站网站建设员岗位职责
  • 公司网站制作教学二手交易网站开发的
  • 物流网站的建设方案固定ip做网站路由设置
  • 网站添加微信支付功能网站技术解决
  • 网站域名及空间购买河北邯郸有什么好玩的地方
  • wordpress网站微信支付北湖区网站建设
  • 可以自己买个服务器做网站吗seo优化一般优化哪些方面
  • 做网站购买域名网站建设期的网站案例
  • 电商网站建设解决方案慈溪企业网站seo
  • 建设银行光明支行网站企业建站用什么软件
  • 网站建设文案有趣网页排版设计模板
  • 免费个人网站注册建设品牌公司网站
  • 如何自己建营销网站电子商务网站的建设与流程
  • 淘客网站如果做优化西安政务服务网
  • 在dw里可以做网站后台吗东莞凤岗网站制作
  • 北京网站建设课程培训班网站怎么做留言的
  • 可信网站收费吗湖北建设部网站
  • 网站营销是什么合肥做网站123cms
  • 深圳建设网站过程手机如何访问电脑做的asp网站