这是我参与更文挑战的第 18 天,活动详情查看: 更文挑战
1. 概述
我们都知道Python一切皆是对象,本期将开始学习面向对象的内容。
主要会介绍三个方面,来详细学习面向对象的概念。
- 面向对象演练
- 对象的进化
- 类和对象
1.1 面向对象演变
假设,我们接到一个任务,如何自行车
这时候,我们就会大致这样思考
- 手推着自行车,保持车与身体平衡
- 坐上自行车
- 双脚踏上脚踏板,向前滑
- 骑上自行车
在骑自行车的这个过程,就是使用的面向过程的思维,第一步做什么第二步做什么,直到完成任务为止。面向过程的思维,是站在执行者角度去看问题的,一般适用于简单问题上。
完成了如何骑自行车,我们又收到了一个,更难的任务如何制作一辆自行车?
这时候,我们还是向前一个任务去思考的话,根本找不着手开始的地方
这时候就是需要我们转换成另外的一种思维,如何设计自行车
哪我们就会有了新的思路,把自行车拆分成不同零件如:
- 车手把
- 轮胎
- 坐垫
- 车链
- 脚踏板
我们把自行车分成不同的零件,然后分批找到对应的厂家,每个厂家都有自己的生产线去生产自行车的零件,我们这时候直接去向各个厂家购买不同的零件之后,进行组装就制作好了一辆自行车。
以上这个制作自行车的过程,我们就采用了面向对象的思维。
面向对象思维思考方式:遇到复杂问题,先从问题中找名词,然后根据确立的名词哪些可以作为类,在根据问题确定类的属性和方法,确定类之间的关系。
1.2 面向对象VS面向过程
面向对象编程的使程序的扩展性更强,可读性更好,使的编程可以像搭积木一样简单
面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码合数据方式更加接近人的思维,从而大大提高编程的效率。
面向过程,主要焦点在如何解决单一问题上,思路简单。
总之,面向对象和面向过程的区别:
- 都是解决问题的思维方式,都是代码组织的方式
- 解决简单问题可以使用面向过程
- 解决复杂问题:宏观上使用面向对象把握,微观处理仍然是面向对象过程
- 面向对象的主要特征主要有:继承,多态,封装
2.对象的进化
为什么会有对象?
起初,编程语言开发出来时,只是解决简单问题的。但是随着需求的复杂化,编程语言也开始进化。从之前出来简单的数据如字符串、数字,后面数据变多有了列表字典等;数据类型复杂化之后出来了结构体;处理数据和逻辑变复杂,出来啦对象。
-
简单数据:字符串、数组。如"JueJing",30
-
数组:将同类型的数据放在一起。如字符数组["Jue","Jing"]
-
结构体:将不同数据放在一起。如列表["age",10,20.1]
-
对象:将不同类型的数据、函数放在一起。
3. 类和对象
3.1 什么是类
类,通俗的讲就是特指某一类对象的统称,没有具体的实物的。
我们来看看几个例子
类:动物
对象:狗、猫、大象
不管是狗、猫还是大象,都是属于动物这个类别,所以猫狗大象是动物的对象。
类由数据属性(变量)和方法(函数)组成。
class 类名:
多变量
多函数
注意点:
- 类名必须符合标识符点规则。推荐首字母大写,多个单词使用驼峰式命名
- 类里面包含属性和函数
- 属性用来描述数据,函数用来描述这些数据进行相关操作
3.2 什么是对象
对象是由类创建具体的实物。
变量 = 类名() #创建类一个实例
变量.类方法() #执行类里面的方法
从一个类创建对象时,每个对象会共享这个类的方法,但属性值不会共享。
怎么理解呢?
举个例子:
-
创建一个动物对象猫和狗,猫和狗都是属于动物这个类
-
它们具有动物行为如吃东西、睡觉
-
但是由于猫和狗它们的外形和性格不一样
(1) 猫咪身材娇小高冷
(2) 狗体型大粘人
-
它们身上大特点,通过属性来加以区分
3.3 小试牛刀
我们来创建一个Animal类,实例对象为猫和狗
class Animal:
def __init__(self,name,food): # Animal的属性特征
self.name = name
self.food = food
def like_food(self): # Animal行为
print(self.name,'的最喜欢的食物是',self.food)
#创建猫实例
cat = Animal("Tom","fish")
cat.like_food()
#创建狗实例
dog = Animal("Bob","meat")
dog.like_food()
总结
今天,我们对面向对象如何发展的,面向对象思想是怎么样的。对面向对象有了大概的认识。接下来,我们会逐一地学习面向对象里具体使用方法。
好啦,以上是本期内容,我们下期见~