POP面向过程的程序设计思想把计算机程序看作是一组命令的集合,即一组函数的顺序执行。面向过程设计时,将整个程序切分成几个函数模块,每一个模块负责解决一个问题。
OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的方法(Method)。面向对象的程序设计把计算机程序视为一组对象的集合,每个对象都可以接收其他对象发过来的信息,计算机程序的执行就是一系列信息在各个对象之间传递。
所有数据类型(数字、字符串、列表、元组、字典)都可以视为对象,当然也可以自定义对象。自定义的对象的数据类型就是面向对象中的类(Class)的概念。
# 处理学生的成绩
# 用dict表示学生的成绩
std1 = { 'name': 'Michael', 'score': 98 }
std2 = { 'name': 'Bob', 'score': 81 }
def print_score(std):
print('%s: %s' % (std['name'], std['score']))
首先思考的应该是Student
类,而不是程序的执行流程。Student
数据类型视为一个对象,该对象拥有name
和score
这两个属性(Property)。
如果要打印一个学生的成绩,首先必须创建出这个Student
对象,然后,给对象发一个print_score
信息,让对象自己把自己的数据打印出来。
class Student(object):
def __init__(self, name, score):
# Student对象有两个属性name, score
self.name = name
self.score = score
def print_score(self):
print('%s: %s' % (self.name, self.score))
lisa = Student('Lisa Simpson', 87) # 创建一个对象
lisa.print_score() # 给对象发信息,即调用对象的方法
在OOP中,有两个重要概念:类(Class)和实例(Instance)。对应上述例子,Student就是一个类,Lisa就是一个实例。
面向对象的设计思想是抽象出Class,根据Class创建Instance。