Skip to content

3.6 小结和复习

本章学到了什么?

小白版总结

这一章我们学会了用"设计图"(类)来造"东西"(对象):

第1节:类和对象 → 画设计图,按图造东西
第2节:继承和多态 → 子承父业,各有各的表现
第3节:Protocol和ABC → 定规范,立规矩
第4节:dataclass → 省代码的数据容器
第5节:实战Tool → 给AI写技能

核心概念回顾

OOP 四大支柱

小白理解 - 四大支柱一图看懂

支柱一句话生活类比
封装数据和方法绑定在一起手机:电池+屏幕+系统打包成一个整体
继承子类复用父类的功能儿子继承爸爸的房子
多态同一动作,不同表现所有动物都会叫,但叫法不同
抽象只关心"能做什么",不关心"怎么做"开车只管方向盘,不管发动机原理
  1. 封装(Encapsulation):数据和方法绑定在一起
  2. 继承(Inheritance):复用和扩展代码
  3. 多态(Polymorphism):同一接口,不同实现
  4. 抽象(Abstraction):隐藏复杂性

本章关键语法速查表

语法用途示例
class 类名:定义类class Dog:
__init__(self, ...)初始化方法def __init__(self, name):
self.属性实例属性self.name = name
class 子类(父类):继承class Puppy(Dog):
super()调用父类方法super().__init__(name)
@property属性装饰器方法伪装成属性
@abstractmethod抽象方法子类必须实现
@dataclass数据类装饰器自动生成 init

与 LangChain 的联系

为什么学 OOP 对 AI 开发重要?

LangChain/LangGraph 大量使用 OOP:

  • Tool 继承自 BaseTool
  • Agent 继承自 BaseAgent
  • Chain 使用多态处理不同组件

学会 OOP = 看懂源码 + 自定义扩展

python
# LangChain Tool 继承自 BaseTool
from langchain.tools import BaseTool

class MyTool(BaseTool):
    name = "my_tool"
    description = "My custom tool"

    def _run(self, query: str) -> str:
        return f"Result: {query}"

复习检测

概念检测

回答以下问题(不看代码):

  1. 类和对象的关系是什么?
  2. __init__ 什么时候执行?
  3. self 代表什么?
  4. 继承的好处是什么?
  5. 什么是多态?
  6. ABC 和 Protocol 有什么区别?
  7. dataclass 帮你省了什么代码?
点击查看答案
  1. 类是蓝图,对象是根据蓝图创建的实例
  2. 创建对象时自动执行
  3. 当前对象自己
  4. 子类可以复用父类的代码,不用重复写
  5. 同一个方法,不同类有不同的实现
  6. ABC 必须显式继承,Protocol 只看有没有对应方法
  7. __init____repr____eq__ 等方法

练习挑战

挑战 1:基础练习

实现一个 Animal 类层次:

python
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass  # 子类实现

class Dog(Animal):
    # TODO: 实现 speak() 返回 "汪汪!"
    pass

class Cat(Animal):
    # TODO: 实现 speak() 返回 "喵喵~"
    pass

挑战 2:进阶练习

用 dataclass 实现一个 Agent 配置:

python
from dataclasses import dataclass, field
from typing import List

@dataclass
class AgentConfig:
    # TODO: 实现
    # - name: 必填
    # - model: 默认 "gpt-3.5-turbo"
    # - tools: 默认空列表
    # - temperature: 默认 0.7,验证范围 0-2
    pass

挑战 3:高难度挑战

实现一个完整的 Agent 类层次结构:

python
from abc import ABC, abstractmethod
from typing import List, Protocol

class Agent(ABC):
    @abstractmethod
    def execute(self, task: str) -> str:
        pass

class SearchAgent(Agent):
    # TODO: 实现
    pass

class AnalysisAgent(Agent):
    # TODO: 实现
    pass

学习建议

新手路线图

必会:类、对象、__init__、self、继承

进阶:@property、dataclass、ABC

高级:Protocol、描述符、元类(用到再学)

记住:不需要一次学会所有内容,先掌握基础,其他用到时再查。


下一章:Module 4: 文件处理与数据持久化

基于 MIT 许可证发布。内容版权归作者所有。