第 3 周:面向对象编程(OOP)
恭喜你顺利进入第 3 周!如果说前两周我们是在写“零散的脚本”,那么这一周你将正式掌握构建大型复杂系统的核心思维——面向对象编程(OOP)。
在 AI 领域,OOP 是绝对的基石。无论是 PyTorch 还是 TensorFlow,所有的神经网络模型、数据加载器都是以 OOP 的形式组织的。掌握了它,你才算真正拿到了进阶 AI 的入场券。
继续保持40min 学习 + 20min 敲代码的节奏,本周的精细化拆解如下:
📅 周一至周二:类与对象、构造方法
- 学习内容:理解“类”是蓝图/模板,“对象”是具体实例;掌握
class关键字定义类;重点攻克__init__构造方法和self参数的作用。 - 实操练习:
- Day 1:定义一个基础的
Student类,包含姓名和年龄属性,以及一个打印自我介绍的方法。创建两个不同的学生对象并调用方法。 - Day 2:编写一个
DataPreprocessor类,在__init__中接收一个原始数据列表,并定义一个清洗数据的方法(如去除空值)。体会将数据和操作数据的函数绑定在一起的便利。
- Day 1:定义一个基础的
📅 周三至周四:封装思想与工具类实战
- 学习内容:理解封装的概念,即隐藏内部实现细节,对外提供公共访问方式(如通过 getter/setter 或装饰器);学习如何设计高内聚、低耦合的工具类。
- 实操练习:
- Day 3:改造昨天的
DataPreprocessor,将处理过程中的中间变量设为私有(加下划线),只暴露最终的清洗结果方法,防止外部意外篡改内部状态。 - Day 4:【工具类实战】封装一个
FileLogger工具类。把上周写的日志功能变成类,支持初始化时指定文件名,并提供统一的log_info()和log_error()方法供其他代码随时调用。
- Day 3:改造昨天的
📅 周五:继承机制与知识串联
- 学习内容:掌握继承的概念(子类复用父类的属性和方法);学会使用
super()调用父类的构造方法和普通方法。 - 实操练习:
- Day 5:创建一个基类
Animal,再创建Dog和Cat子类继承它,重写它们的叫声方法(多态初体验)。尝试用super()在子类中扩展父类的功能。
- Day 5:创建一个基类
📅 周六:周末实战落地(2.5 ~ 3 小时)
- 实操任务:【自定义数据集类(AI 项目高频用法)】
- 前半段(1.5h):这是深度学习中最核心的类之一!仿照 PyTorch 的
Dataset模板,自己手写一个SimpleTextDataset类。要求在__init__中读取文本文件路径,并定义获取数据集长度(__len__)和根据索引获取样本(__getitem__)的方法。 - 后半段(1h):将这个数据集类实例化,写个简单的循环遍历它,看看能否正确读出每一条文本数据。
- 前半段(1.5h):这是深度学习中最核心的类之一!仿照 PyTorch 的
📅 周日:复盘与拓展(2.5 ~ 3 小时)
- 实操任务:【综合小项目:简易配置管理器】
- 花 2 小时做一个读取 JSON/YAML 配置文件的
ConfigManager类。要求支持按层级获取配置项,如果找不到则返回默认值。这个类在未来做 AI 模型训练时,管理超参数会非常有用。 - 剩下 1 小时回顾本周内容。OOP 概念比较抽象,建议画一张思维导图理清“类、对象、属性、方法、继承”的关系。
- 花 2 小时做一个读取 JSON/YAML 配置文件的
💡本周专属叮嘱:
- 死磕
self:初学者最容易搞混的就是self。记住,self就代表“当前被创建出来的那个对象本身”。 - 不要畏惧报错:OOP 相关的报错(如
TypeError: __init__() takes X positional arguments but Y were given)通常是因为传参没对齐或者忘了写self,仔细检查构造方法的参数列表即可。 - AI 框架的启示:当你学到后面的 PyTorch 时,你会发现所有的模型都是
class MyModel(nn.Module):,这其实就是今天你学的“继承”的最直接应用。
准备好迎接编程思维的升级了吗?遇到任何关于类和对象的疑惑,随时把代码发给我,我们一起探讨!
