python学习-第十三周:面向对象编程OOP
python学习-第十三周:面向对象编程OOP
面向对象编程
面向对象编程(Object Oriented Programming)简称
OOP,是一种以对象为中心的程序设计思想。
与之对应的是,面向过程编程(Procedure Oriented ProgrammingPOP),即以过程为中心的程序设计思想。
理解面向过程与面向对象思想
对于同一个问题用这两种不同的思想来解决,看看它们的区别
提出问题:做饭
面向过程:
1.买菜
2.洗菜
3.刷锅刷碗
4.炒菜
5.端上餐桌
面向对象:
对象:厨师
告诉厨师去做饭
面向对象就是调用对象去解决问题,具体的对象如何去解决呢?
厨师这个对象肯定也是一步步去做饭。但是对于我来说,就是调用了对象。
面向过程和面向对象的区别和优缺点?
一,面向过程
面向过程的核心是过程,过程就是指解决问题的步骤。
优缺点:
- 优点: 将负责的问题流程化,进而实现简单化
- 缺点:扩展性差(更新,维护,迭代)
总结:在去完成一些简单的程序时,可以使用面向过程去解决。但是如果有复杂的程序或任务,而且需要不断的进行迭代和维护,那么肯定是优先选择面向对象的编程思想
二,面向对象
面向对象的核心是对象,是一个特征和功能的综合体
优缺点:
- 优点:可扩展性高
- 缺点:编程复杂度相对面向过程高一些。
认识OOP中的概念
类:类是对象的一个抽象的概念
对象(实例):对象就是由类的创建的实例
类和对象的关系就是 模具与铸件、整体和部分的关系
- 类是由对象总结而来的,总结的这个过程叫做抽象
- 对象是由类具体实施出来的,这个过程叫做实例化
例如:水果是一个类,苹果是一个对象
汽车是一个类,宝马是一个对象
类 由 属性和方法 两个内容组成:
属性:(类的特征)就是一个描述:颜色、品种、大小 。。。
方法:(类的功能)就是一个能力:拉货、载人。。。
属性在编程中就是一个变量 ,方法在编程中就是一个函数
类中属性一般定义在前面,方法定义在后面
面向对象编程的基本实现
第一步:抽象一个类
# 定义一个汽车的类
class Cart():
pass
'''
类名的书写规范,建议使用驼峰命名法
大驼峰:MyCar XiaoMi
小驼峰:myCar xiaoMi
'''
第二步:定义类的属性和方法
# 定义一个汽车的类
class Cart():
# 属性 ==> 特征 ==> 变量
color = '白色' # 表示颜色属性
brand = '宝马' # 表示品牌属性
pailiang = 2.4 # 表示排列属性
# 方法 ==> 功能 ==> 函数
def yunhuo(self):
print('小汽车能运货')
def doufeng(self):
print('小汽车能兜风')
def didi(self):
print('小汽车开滴滴')
使用一个类
# 如何去使用这个类?
# 通过类实例化一个对象
baoma = Cart()
# 调用方法
baoma.doufeng()
# 获取对象的属性
print(baoma.brand)
对属性和方法的操作
对象操作
成员属性:
访问: 对象.属性名
修改: 对象.属性名 = 新值。(此时等于给这个对象创建了一个自己的属性)
添加: 对象.新属性名 = 值 (此时是给这个对象自己新建了一个属性)
删除: del 对象.属性名 (注意:只能删除这个对象自己的属性)
成员方法:
访问: 对象.方法名()
修改: 对象.方法名 = func(此时等于给这个对象创建了一个自己的方法)
添加: 对象.新方法名 = func (此时是给这个对象自己新建了一个方法)
删除: del 对象.方法名 (注意:只能删除这个对象自己的方法)
类操作(不推荐)
操作属性:
访问: 类名.属性名
修改: 类名.属性名 = 新值。(此时通过这个类创建的对象都具有这个属性)
添加: 类名.新属性名 = 值 (此时通过这个类创建的对象都具有这个属性)
删除: del 类名.属性名 (注意:删除这个类的属性后,这个类创建的对象也没有这几个属性了)
操作方法:
访问: 类名.方法名()
修改: 类名.方法名 = func(此时通过类创建的对象都被修改)
添加: 类名.新方法名 = func (此时通过类创建的对象都被修改)
删除: del 类名.方法名 (注意:此时通过类创建的对象都被修改)
总结
- 一个类可以实例化出多个对象,每个对象在内存中都独立存在的
- 当通过类实例化对象时,并不会把类中的成员复制一份给对象,而去给对象了一个引用
- 访问对象成员的时候,如果对象自己没有这个成员,对象会向实例化它的类去查找
- 对象成员的添加和修改,都只会影响当前对象自己,不会影响类和其它对象
- 删除对象的成员时,必须是该对象自己具备的成员才可以,不能删除类中引用的成员
- 对类的成员操作,会影响通过这个类创建的对象,包括之前创建的。
面向对象编程OOP部分归纳完毕,下周总结OOP的特性相关内容,下周见~

浙公网安备 33010602011771号