1、面向对象和面相过程编程
面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象做为程序的基本单元,一个对象包含了数据和操做数据的函数。函数
面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数经过切割成小块函数来下降系统的复杂度。spa
而面向对象的程序设计把计算机程序视为一组对象的集合,而每一个对象均可以接收其余对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。设计
在Python中,全部数据类型均可以视为对象,固然也能够自定义对象。自定义的对象数据类型就是面向对象中的类(Class)的概念。code
咱们以一个例子来讲明面向过程和面向对象在程序流程上的不一样之处。对象
假设咱们要处理学生的成绩表,面向过程的程序表示一个学生成绩能够用一个dict表示,处理学生成绩用函数表示:blog
1 >>> std1 = {'name': 'Mich', 'score': 100} 2 >>> std2 = {'name': 'Jack', 'score': 50} 3 >>> def print_score(std): 4 ... print('%s:%s' % (std['name'], std['score'])) 5 ... 6 >>> print_score(std1) 7 Mich:100 8 >>> print_score(std2) 9 Jack:50
若是采用面向对象的程序设计思想,咱们首选思考的不是程序的执行流程,而是Student
这种数据类型应该被视为一个对象,这个对象拥有name
和score
这两个属性(Property)。若是要打印一个学生的成绩,首先必须建立出这个学生对应的对象,而后,给对象发一个print_score
消息,让对象本身把本身的数据打印出来。继承
1 >>> class Student(object): 2 ... def __init__(self, name, score): 3 ... self.name = name 4 ... self.score = score 5 ... def print_score(self): 6 ... print('%s:%s' % (self.name, self.score)) 7 ... 8 >>> st1 = Student('Mich', 100) 9 >>> st2 = Student('Jack', 100) 10 >>> st1.print_score() 11 Mich:100 12 >>> st2.print_score() 13 Jack:100
面向对象的设计思想是从天然界中来的,由于在天然界中,类(Class)和实例(Instance)的概念是很天然的。Class是一种抽象概念,好比咱们定义的Class——Student,是指学生这个概念,而实例(Instance)则是一个个具体的Student,好比,st1和st2是两个具体的Student。it
因此,面向对象的设计思想是抽象出Class,根据Class建立Instance。面向对象编程
面向对象的抽象程度又比函数要高,由于一个Class既包含数据,又包含操做数据的方法。
面向对象三大特性:封装,继承,多态