跳到主要内容

面向对象编程

1. 什么是面向对象编程

  • 面向对象编程(OOP,Object Oriented Programming):一种程序设计思想,把对象作为程序的基本单元。
  • 对象:包含数据操作数据的函数(即“数据 + 行为”)。

2. 面向过程 vs 面向对象

思想程序视为特点
面向过程一系列命令,即一组函数的顺序执行把函数继续切分为子函数,大块→小块,降低复杂度
面向对象一组对象的集合每个对象可接收并处理其他对象发来的消息;程序执行 = 消息在对象之间传递
  • 在 Python 中,所有数据类型都可视为对象,也可自定义对象;自定义的对象数据类型就是类(Class)

3. 示例:学生成绩

面向过程写法

  • dict 表示一个学生;用函数处理成绩。
std1 = {'name': 'Michael', 'score': 98}
std2 = {'name': 'Bob', 'score': 81}

def print_score(std):
print('%s: %s' % (std['name'], std['score']))

面向对象写法

  • Student 视为一种对象,拥有 name、score属性(Property)
  • 打印成绩:先创建该学生对象,再给对象发 print_score 消息,让对象自己把数据打印出来。
  • 发消息 = 调用对象的方法(Method)
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score

def print_score(self):
print('%s: %s' % (self.name, self.score))

bart = Student('Bart Simpson', 59)
lisa = Student('Lisa Simpson', 87)
bart.print_score() # 给对象发消息
lisa.print_score()

4. 类(Class)与实例(Instance)

  • 思想来自自然界:Class抽象概念(如“学生”);Instance具体对象(如 Bart、Lisa 两个具体学生)。
  • 面向对象的设计:先抽象出 Class,再根据 Class 创建 Instance
  • 抽象程度:OOP 比函数更高,因为一个 Class 既包含数据,又包含操作数据的方法

5. 面向对象三大特点

  • 数据封装继承多态是面向对象的三大特点,后续章节会详细讲解。

小结

要点说明
OOP对象为基本单元,对象 = 数据 + 操作数据的函数
面向过程程序 = 函数顺序执行;面向对象 = 程序 = 对象集合,消息在对象间传递
Class / InstanceClass 是抽象类型,Instance 是具体对象;先抽象 Class,再创建 Instance
属性 / 方法对象的数据即属性;发消息即调用方法
三大特点数据封装继承多态

记忆:对象 = 数据 + 方法;类 = 抽象,实例 = 具体;发消息 = 调方法。