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

Python打卡DAY29

知识点回顾

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

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

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

1. 添加新的方法或属性(如示例中的 log 方法)。

2. 修改原有方法(如替换 __init__ 方法,添加日志)。

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

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

函数不仅是代码复用的基本单元,更是程序逻辑组织的核心。通过定义函数,我能将复杂任务拆解成小模块,代码结构更清晰、易懂。

类和面向对象编程则是另一种思维方式。通过类,我能把数据和操作封装在一起,模拟现实中的“对象”,这让程序更贴近现实问题。继承、多态等特性让我看到了代码的扩展性和复用潜力,写起代码来也更具条理。

python对我来讲,感觉是从一个实现某个特定功能的工具,演变为一种思维方式的展现。

@浙大疏锦行

相关文章:

  • 架构设计模式:构建健壮、可扩展的 Serverless 应用
  • Seata源码—6.Seata AT模式的数据源代理一
  • buck变换器的simulink/matlab仿真和python参数设计
  • 【AGI】大模型微调数据集准备
  • Nginx配置中include mime.types的作用及正确配置mime类型
  • 不同版本 Linux 系统账号操作指令 ——rtkit 账号删除、普通账号的创建 / 删除 / 权限修改超详细大全
  • 【深度学习】使用块的网络(VGG)
  • MyBatis 延迟加载与缓存
  • 10.7 LangChain v0.3架构大升级:模块化设计+多阶段混合检索,开发效率飙升3倍!
  • C++学习:六个月从基础到就业——C++17:std::optional/variant/any
  • CSS- 4.4 固定定位(fixed) 咖啡售卖官网实例
  • 院校机试刷题第六天:1134矩阵翻转、1052学生成绩管理、1409对称矩阵
  • 180KHz 60V 5A开关电流升压/升降压型DC-DC转换器XL4019升降压芯片
  • “Cloud Native English“云原生时代下的微服务架构设计:从理论到实战全解析
  • 相机Camera日志分析之十三:高通相机Camx 基于预览1帧的ConfigureStreams三级日志分析详解
  • Android开发-列表类视图
  • 机器学习入门之朴素叶贝斯和决策树分类(四)
  • linux上利用QProcess获取进程打印
  • 选择合适的AI模型:解析Trae编辑器中的多款模型及其应用场景
  • C++ map multimap 容器:赋值、排序、大小与删除操作
  • 高温最强时段来了!北方局地高温有明显极端性
  • 上海小学生暑(寒)托班会增设开办期数、延长办班时间吗?团市委回应
  • 竞彩湃|足总杯决赛或有冷门,德甲欧冠资格之争谁笑到最后
  • 淮安市车桥中学党总支书记王习元逝世,终年51岁
  • 多个“首次”!上市公司重大资产重组新规落地
  • 中方是否计划解除或调整稀土出口管制?外交部回应