学径 LearnPath

类与对象

1 / 1 · ← → 翻页

阅读模式

第 9 课

对象:用结构模仿事物

类是图纸,对象是按图纸存在的那一件。

DNA 双螺旋
DNA 双螺旋结构示意图。Zephyris。来源:Wikimedia Commons,CC BY-SA 3.0。

导言

课程目标

函数抽象过程。

对象抽象带状态的事物。

同一条方程应当可被反复提起。

现象

结构里既有信息,也有行为

DNA 双螺旋
DNA 双螺旋结构示意图。Zephyris。来源:Wikimedia Commons,CC BY-SA 3.0。

一条方程拥有系数,并且知道如何求解。

辨析

隐喻到此为止

图纸说明一类东西长什么样。

并不宣称类就是 DNA。

原理

四个系数为什么要住在一起

同一条方程还要被打印、被比较。

散落的参数不是「这一条」。

例证

构造:把数据贴到实例上

python
class LinearEquation:
    def __init__(self, a, b, c, d):
        self.a = a
        self.b = b
        self.c = c
        self.d = d
  • self 是正在构造的那一件
  • 不贴到 self 上,数据又散了

例证

方法使用该实例自己的系数

python
    def solve(self):
        A = self.a - self.c
        D = self.d - self.b
        return D / A

eq = LinearEquation(2, 3, 0, 7)
print(eq.solve())
  • 不必再把四个数递过去
  • 2x+3=72x+3=7,解为 2.0

辨析

self 指点号左边那一个

eq.solve() 时,self 就是 eq。

属性必须通过 self 点出来。

对照 eq1 与 eq2:后造的不会覆盖先造的属性。

例证

两台机器,一份图纸

python
eq1 = LinearEquation(2, 3, 0, 7)
eq2 = LinearEquation(-5, 10, 0, 0)
print(eq1.a, eq2.a)
  • eq1.a 仍是 2
  • 状态贴在实例上

讨论

问题里有没有「那一件东西」

有,再用类去模仿。

没有,函数已经足够。

实践

本节练习

定义 Interval,方法交回长度。

造 (0, 5) 与 (-2, 2)。

请打开「在线 IDE」。两条区间的长度应为 5 与 4;第一条的左端仍是 0。

小结

本节要点

类描述一类事物。

对象是按这张描述存在的实例。

下一课

下一课

不必从零发明平方根。

模块:站在他人已经完成的工作之上。

已到最后一页。可按 ← 回顾,或切换回阅读模式。