内容正文:
模块五
Python的面向对象编程
什么是Python?
如何搭建Python的简单开发环境?
了解Python的基本语法。
什么是类、实例对象、对象属性?
什么是数据的封装、访问权限、继承、多态?
如何获取对象信息?
如何使用_slots_、@property?
什么是多重继承、定制类?
如何使用枚举类、元类?
学习要点
01
02
03
面向对象的基础编程
面向对象的高级编程
实训:对交通工具进行分类并进行面向对象的编程
01
面向对象的基础编程
5.1面向对象的基础编程
程序设计思想有两种:第一种是面向过程的程序设计,第二种是面向对象的程序设计。
面向过程的程序设计把计算机程序视为一系列的命令集合,每一条命令又可以是对某个函数的调用,而函数又是若干条命令封装成的一个调用单元,函数又可以调用子函数,即面向过程的程序是按照某种逻辑关系调用一系列的函数。
面向对象的程序设计是把对象作为程序的基本单元,一个对象包含数据和操作数据的函数。而计算机程序则被视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。
Python中的数据类型都是对象,也可以自定义对象或称为自定义数据类型。自定义的对象数据类型就是面向对象中的类(class)的概念。
5
5.1面向对象的基础编程
【例5-1】分别用面向过程和面向对象的方式来处理某个学生的成绩。
(1)面向过程的处理方式。
#用一个dict表示学生的成绩
student1 = { 'name': 'Mike','score': 98 }
student2= { 'name': 'Jone','score': 81 }
#函数print_score实现打印学生的成绩
def print_score(std):
print("%s: %s" % (std['name'],std['score']))
#打印出student1和student2的成绩信息
print_score(student1)
print_score(student1)
#结果为
Mike: 98
Jone: 81
6
(2)面向对象的处理方式。用面向对象的程序设计思想来处理这个问题,首先思考的不是程序的执行流程,而是Student这种数据类型应该被视为一个对象,这个对象拥有name和score这两个属性(property)。如果要打印一个学生的成绩,首先必须创建出这个学生对应的对象,然后给对象发一个print_score消息,让对象自己把自己的数据打印出来。
5.1面向对象的基础编程
7
5.1面向对象的基础编程
#创建Student对象(或者创建Student数据类型),对象(数据类型)里包含name、score两个属性和
#一个数据处理方法print_score
class Student(object):
def __init__(self,name,score):#定义name、score两个属性
self.name = name
self.score = score
def print_score(self):#定义数据处理方法
print ("%s: %s" % (self.name,self.score))
#利用定义的Student对象(Student数据类型)创建两个学生实例对象student1和student2
student1 = Student('Mike',98)
student2 = Student('Jone',81)
#分别向student1、student2发送消息,让对象自己把自己的数据打印出来
student1.print_score()
student2.print_score()
#结果为
Mike: 98
Jone : 81
8
面向对象的设计思想是从自然界中来的,因为在自然界中,类(class)和实例(instance)的概念是很自然的。class是一种抽象概念,如我们定义的类Student,是指学生这个概念,而实例(instance)则是一个个具体的Student,如Mike和Jone是两个具体的Student。
所以,面向对象的设计思想是抽象出class,根据class创建instance。
面向对象的抽象程度又比函数要高,因为一个class既包含数据,又包含操作数据的方法。
5.1面向对象的基础编程
9
5.1面向对象的基础编程
5.1.1类和实例
类(class)和实例(instance)是面向对象程序设计中的两个最重要的概念。类是对客观事物的抽象的模板