🧩 第四章 面向对象编程技术:去除冗余、进行整理
📄 一句话概括

三条边界三根柱子——三要素保证代码组织得好,这三样才保证系统跑得稳。

📝 本节和前面几节的关系

4.15~4.17 讲完三个结构,这一节收口。

一、一张表

包——给名字划地盘——代价:目录结构变复杂。 异常——给失败划通道——代价:可能被吞、开销略大。 垃圾回收——给对象划生死线——代价:停顿、内存占用。 注意每一行都有代价:这三个结构不是免费的福利,是三次有意识的取舍。

二、内置不等于不用理解

Python 里这三样都是内置的:import 一个模块就算用上了包、try/except 是语法不是库、import gc 能手动触发回收。 所以你写代码时几乎不用想它们。 但框架代码里到处是 try/except、import、上下文管理器——看不懂这三样,框架就没法读。

三、回答 4.14 那个问题

为什么它们算【更先进的 OOP 结构】? 因为三大要素只保证了【代码组织得好】,这三样才保证【系统跑得稳】。 组织得好是写给人的,跑得稳是写给机器的。一件软件得同时满足两头。

四、本章的完整地图

三大要素:类(汇总/隐藏/创建很多个)、多态(调用端公用化)、继承(共享一份代码)。 三个结构:包、异常、垃圾回收。 六块合起来,就是这本书后面所有章节的词汇表。 下一章换个角度:这些对象在内存里到底怎么摆。

五、动手 Demo:对进化的 OOP 结构的总结

三个结构、三条边界、三笔代价,排成一张表。 再确认一遍它们在 Python 里是不是都内置。

rows = [
    ("包",       "给名字划地盘",   "目录结构变复杂"),
    ("异常",     "给失败划通道",   "可能被吞、开销略大"),
    ("垃圾回收", "给对象划生死线", "停顿、内存占用"),
]
for name, what, cost in rows:
    print(name, what, "|代价:", cost)

实跑输出:

--------------------------------------------------------------------
对进化的 OOP 结构的总结
--------------------------------------------------------------------

  三个结构,三条边界,**合起来撑起【大规模 OOP 代码】的三根柱子。**

  结构         一句话             代价
  ---------------------------------------------------
  包           给名字划地盘       目录结构变复杂
  异常         给失败划通道       可能被吞、开销略大
  垃圾回收     给对象划生死线     停顿、内存占用

  实测 Python 这三样都是内置的:

      包      import 一个模块就算用上了
      异常    try/except 是语法,不是库
      回收    import gc; gc.collect()

  **注意:内置不等于不用理解。**
  框架代码里到处是 `try/except`、`import`、上下文管理器——
  **看不懂这三样,框架就没法读。**

  这也回答了 4.14 那个问题:**为什么它们算【更先进的 OOP 结构】?**
  **因为三大要素只保证了【代码组织得好】,这三样才保证【系统跑得稳】。**

实测:三条边界、三笔代价——每一行都不是免费的福利,是有意识的取舍。 三要素保证代码组织得好,这三样才保证系统跑得稳——这是 4.14 那个问题的答案。

30 秒实验

  1. 给你的项目列一张表:三条边界各自靠什么机制在管。
  2. 想一想:哪一条边界你现在是靠人盯着的,那就是最容易出事的地方。

常见误区

  1. 以为这三个结构是高级特性、可以后学。读框架代码时第一天就要用。
  2. 以为它们只有好处。每一条都带着明确的代价。
自测三问(点开对答案) 1. 三条边界和三笔代价各是什么? —— 包(目录变复杂)、异常(可能被吞、开销略大)、垃圾回收(停顿、内存占用)。 2. 为什么说这三个结构算【更先进】? —— 三大要素保证代码组织得好,这三样才保证系统跑得稳——一个给人看,一个给机器跑。 3. 本章一共讲了哪六块? —— 三大要素(类、多态、继承)加三个结构(包、异常、垃圾回收)。

相关笔记