
在上一节中,我们完成了面向对象三大核心特性(封装、继承、多态)的学习,掌握了模块化、可扩展代码的编写方法。但在实际开发中,我们还会遇到更细致的需求:
- 想修改@property装饰的“只读属性”,又想保留校验逻辑;
- 想统一操作类属性(如统计对象总数),用实例方法或普通函数不够规范;
- 想在类中定义“工具方法”,不依赖对象和类的属性,无需创建对象就能调用。
本节课我们将学习3个面向对象高级技巧,精准解决以上问题,进一步提升代码的规范性、灵活性和可读性:@property装饰器进阶(setter/deleter)、类方法(@classmethod)、静态方法(@staticmethod)。三者各司其职,是编写高质量面向对象代码的必备技能,也是面试高频考点。
本节核心学习内容:
- @property进阶:setter装饰器(修改私有属性)、deleter装饰器(删除私有属性);
- 类方法:@classmethod装饰器、cls参数、作用场景(操作类属性);
- 静态方法:@staticmethod装饰器、作用场景(工具方法);
- 核心区分:实例方法、类方法、静态方法的用法与区别;
- 实战案例:整合三大技巧,改造学生管理系统,提升代码规范性;
- 新手避坑:三类方法调用误区、@property进阶用法错误。
文章目录
- 一、@property进阶:setter与deleter,实现属性的可控修改与删除
-
- 1. 回顾:@property基础只读用法(痛点)
- 2. @property.setter:实现私有属性的可控修改
-
- 语法格式
- 核心注意事项
- 示例:用setter修改学生年龄(带校验)
- 3. @property.deleter:实现私有属性的可控删除
-
- 语法格式
- 示例:用deleter删除学生年龄(带校验)
- 4. @property进阶总结(新手必记)
- 二、类方法:@classmethod,操作类属性的专属方法
-
- 1. 为什么需要类方法?
- 2. 类方法基础语法
-
- 核心注意事项
- 示例:用类方法修改汽车总数(带校验)
- 3. 类方法的常见场景
-
- 示例:用类方法统计学生数量
- 三、静态方法:@staticmethod,独立于类和对象的工具方法
-
- 1. 为什么需要静态方法?
- 2. 静态方法基础语法
-
- 核心注意事项
- 示例:用静态方法校验学生成绩
- 3. 静态方法的常见场景
-
- 示例:静态方法实现简单计算
- 四、核心区分:实例方法、类方法、静态方法(新手必背)
-
- 1. 三者核心对比表
- 2. 直观示例:同一个类中的三种方法
- 3. 新手判断技巧(快速选型)
- 五、实战案例:整合三大技巧,改造学生管理系统
-
- 需求
- 完整代码
- 运行结果
- 六、新手避坑大全:三大技巧高频错误
-
- 避坑1:@property.setter 定义在 @property 之前
- 避坑2:类方法用self参数,静态方法用self/cls参数
- 避坑3:静态方法/类方法访问实例属性
- 避坑4:修改类属性不用类方法,直接赋值无校验
- 避坑5:滥用静态方法/类方法
- 七、核心总结
- 八、专栏订阅
一、@property进阶:setter与deleter,实现属性的可控修改与删除
在进阶篇2中,我们学习了@property的基础只读用法,将私有属性伪装成“只读属性”,通过“对象.属性名”优雅访问,禁止直接修改。但实际开发中,我们常常需要合法修改/删除私有属性(如修改学生年龄、删除银行卡绑定信息),此时就需要用到@property的进阶用法:@属性名.setter(修改)和@属性名.deleter(删除)。
1. 回顾:@property基础只读用法(痛点)
class Student:
def __init__(self, age)</



