news 2026/7/6 13:48:00

Python 7+ @装饰器:优雅编程新体验

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 7+ @装饰器:优雅编程新体验

一、学前花絮

学习深入后, 我们知晓, 因全世界社区贡献, 不断增添新功能、新模块, 使其在各个领域展现出独特风采, 过程层层递进, 原因相互关联, 结果显著突出。

先比如说在我们学习类class之时, 第一步要做些什么呢, 要去写()方法, 以此来初始化类以及实例变量, 而这些变量是意在自定义方法或者实例化之后加以使用的, 然而在.7+版本往后, 我们这一步工作能够省略掉了, 能够直接去关注业务逻辑, 对于数据变量借助@装饰器达成即可。

二、.7+中的@装饰器2.1 @ 是什么?

@是一种类装饰器, 它借助对类里所定义的带有类型注解的字段予以分析, 进而自动生成如下方法, 此为默认开启状态:

():初始化实例

():友好的字符串表示(用于 print())

():支持 == 比较

你只需声明“这个类有哪些数据”,其余交给 !

不用@的代码

我们在进行自定义类操作时, 一般要自行撰写 init 方法来对变量予以初始化;为迎合输出以及比较便捷的需求, 也得去编写 repr、eq 等方法。然而一旦运用了 @, 这些相关工作均可省略掉!

2.用@的代码

上面的代码跟之前的代码是全然等价的, 我们能够瞧见其优雅之处了。在我们运用了类装饰器之际, 我们仅仅需要留意变量的类型就行, 而初始化init等方法均可省略掉了。

2.2 用户只需关心“自定义方法”

@ 的核心思想是:数据结构由装饰器处理,业务逻辑由你实现。

比如, 你打算给 User 类增添 一个“打招呼”的方法, 以及一个用于判断年龄的方法:

调用上面的方法:

输出结果:

关键要点在于, 你无需去操心像 self.name = name 这般缺乏灵活性的赋值操作了, 只需全神贯注地去编写类似于 greet() 这种与业务紧密相关的方法就行。

2.3 高级用法:不可变对象 & 默认值

@ 还支持更多实用配置:

1. 创建不可变对象(类似 )

以上所列举的例子当中, 鉴于存在这样一个参数, 致使类里面Point的变量于可修改方面受到限制, 在程序运行期间于修改变量之际, 将会出现报错的情况!这属于一种对变量予以保护的方式。

2. 设置默认值

在上述所列举的例子当中, 不但达成了数量极少的代码编写, 并且还针对变量进行了默认值的设定。需要留意的是, 那些具备默认值的字段, 是一定要放置在没有默认值的字段的后面的!

2.4 对比传统写法:为什么推荐 @?

通过与传统写法相比,用类装饰器@的好处可见。

2.5 以上内容的总结三、小结

针对本篇章内容来讲, 其侧重点在于实用, 不存在太多难以理解之处, 主要是就版本的发展而言, 有更多好用的装饰器可供拿来使用, 从而让我们更能体会到那份优雅!

让我们保持学习热情,多做练习。我们下期再见!快乐男孩。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 13:41:55

大学四年:简历上五项竞争力的排序、取舍与成长逻辑

这篇不是教你"卷"的文章,而是一份关于"把力气花在对的地方"的参考地图——什么阶段该做什么事,不同目标该怎么排序,以及那些没人明说但至关重要的判断标准。智联招聘《2025大学生就业力调研报告》显示,拥有2段…

作者头像 李华
网站建设 2026/7/6 13:41:19

掌握Universal Extractor 2:从500+格式到高级提取完全指南

掌握Universal Extractor 2:从500格式到高级提取完全指南 【免费下载链接】UniExtract2 Universal Extractor 2 is a tool to extract files from any type of archive or installer. 项目地址: https://gitcode.com/gh_mirrors/un/UniExtract2 Universal Ex…

作者头像 李华
网站建设 2026/7/6 13:41:00

工程采购母线槽避坑指南:实体生产工厂的资质、检测、交付、售后全维度筛选标准

工程采购母线槽避坑指南:实体生产工厂的资质、检测、交付、售后全维度筛选标准一、概述当前母线槽市场经销商、贴牌厂商数量较多,项目落地常出现材质减配、资质不全、检测报告造假、售后无保障等问题。对于大型基建、工厂、化工、住宅小区等安全要求高的…

作者头像 李华
网站建设 2026/7/6 13:41:00

智能监控:B站动态抽奖的自动化参与策略

智能监控:B站动态抽奖的自动化参与策略 【免费下载链接】LotteryAutoScript Bili动态抽奖助手 项目地址: https://gitcode.com/gh_mirrors/lo/LotteryAutoScript 当你每天花费数小时在B站上手动参与各种抽奖活动,却收效甚微时,是否想过…

作者头像 李华
网站建设 2026/7/6 13:39:31

PU-Learning 两阶段实战:间谍技术与1-DNF识别可靠负样本的3步代码实现

PU-Learning 两阶段实战:间谍技术与1-DNF识别可靠负样本的3步代码实现金融风控场景中常遇到这样的困境:我们只能确认少量欺诈用户(正样本),而海量未标记用户中既包含正常用户也隐藏着潜在欺诈者。传统方法将所有未标记…

作者头像 李华
网站建设 2026/7/6 13:37:09

AI视频出海:跨境卖家如何用智能工具低成本打造本地化广告

一位跨境电商卖家去年尝试拓展日本市场,他遇到的第一个问题不是选品而是广告制作。找到的本地制作团队报价一个15秒TikTok广告超过2000美元,排期要等两周。他账户里有二十多款产品需要推,按这个节奏一年都拍不完。 这个场景在跨境圈并不罕见…

作者头像 李华