注册 登录
Python面向对象
首页 > Python面向对象 > 1.2节:理解面向对象的基础概念

1.2节:理解面向对象的基础概念

薯条老师 2020-05-27 07:47:51 187378 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师的线下Python小班办得很好,学员的平均就业薪资有11K。线下小班培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

1.2.1 理解面向对象

在16.1节中讲到了面向过程,面向过程是把问题的求解过程分解为多个步骤,而面向对象关注的是问题本身,将其视为一个整体,将其抽象为一种数据类型。在面向对象的程序设计中,通过定义类类型来进行抽象。理解面向对象,需要思考两个核心问题:什么是对象?什么是面向对象?

image.png

(1) 什么是对象?

若以对象的角度来看世界,则一切皆对象:山河湖海,日月星辰,天地灵长,飞禽走兽。Python中的对象是指数据类型的一个实例。以整型为例,我们在定义一个整型变量时,实际构造的是一个整型对象。现在同学们进入Python交互模式,通过type来输出整型对象的类型名:

>>> number = 1
>>> type(number)
<class 'int'>

在type的输出中,int即为整型的类型名。通过def定义的一个函数,也是对象,我们同样可以在交互模式中进行验证:
>>> def command():
...   pass
...
>>> type(command)
<class 'function'>

在type的输出中,function即为函数对象的类型名。

(2) 什么是面向对象?
面向是一个动词,面向对是指对某一个具体的事物进行描述,概括,然后以计算机中的编程语言进行建模。 面向对象编程的核心是抽象,什么是抽象呢?简单地解释,抽象即概括和归类,这里的概括是对共性的概括。薯条老师家里养了一只短尾猫,那么,就以猫来对面向对象进行举例。在前文已经解释过,若以对象的角度来看世界,那么一切皆对象。

自然,这只猫也是对象。短尾猫是猫这种动物的一个具体对象,而猫是短尾猫,中国猫等猫类的一个概括和归类。

在面向对象中,我们可以定义一个数据类型来对猫进行抽象,抽象后的数据类型就叫做类,类由类属性和类方法组成。类属性表示的是这种数据类型的共有特征,而类方法表示该数据类型共有的行为。对类进行实例化,可以得到一个具体的对象,实例化后的对象共享类的属性与方法。

在Python中一切皆对象,以字典类型进行举例,字典类型就是一个类类型,对字典类型进行实例化后,可以得到一个字典对象。

现在我们进入交互模式,在交互模式中定义一个字典对象:
>>> book = dict(author="chipscoco", price="9.9")
>>> type(book)
<class 'dict'>
在交互模式中,我们通过dict类型实例化了一个字典对象。

1.2.2 面向对象的三大特征

进一步理解面向对象,同学们需理解面向对象的三个核心特征:封装,继承,多态。

(1) 什么是封装?
封装说的通俗一点,就是藏起来。面向对象中的封装,是指将数据类型的属性和方法的实现细节藏起来,只提供对数据类型进行操作的接口。对于封装和接口,下图的插座和电源线的关系就很形象:

image.png





插座对外隐藏了其内部的实现细节,对外提供了供电源线进行电路连接的接口。 封装的实质是将数据类型与数据类型的使用者进行隔离。将内部属性进行隔离,保障了数据的完整性。将数据类型操作方法的实现细节进行隔离,隔离了实现过程的复杂度。封装的另外一个重要性是便于代码的复用,比如将需要重复执行的代码块封装为一个函数。

(2) 继承
“子承父业”就包含继承的概念。小王对父亲老王进行继承以后,就可以获得老王的财产。面向对象中的继承也是一样的道理,比如A类型继承于B类型,那么A类型就获得了B类型的属性和方法。A类就叫做B类的子类,B类就是A类的父类。

从这一点也可以看出,计算机中的复杂概念是对生活经验的提炼和模拟。我们在理解复杂的概念时,可以多联想生活中出现的事物。

在面向对象设计中,可以通过继承来实现复用和扩展。只是继承,而不进行扩展,那么这样的设计多半是糟糕和无用的设计。如同小王继承了老王的财产以后,如果只是用来进行挥霍,而不思进取,那么小王一定会坐吃山空,沦为一个败家子。

(3) 多态

多态是指同一事物存在多种状态或行为。在面向对象程序设计中,多态是指父类方法的多种不同实现方式。如何对父类方法进行多种不同的实现?可以通过继承的方式,即多个子类对从父类继承的方法进行不同的实现。

子类对父类方法进行不同的实现以后,将子类再赋值给父类对象,父类对象再根据子类对象的类型,在运行时调用同一方法的不同实现,这样就实现了多态。

初学者在理解封装,继承,多态时,会觉得很抽象,这是很正常的。在后面的教程当中,会以代码示例来帮助同学们理解何为面向对象中的封装,继承,多态。

在本节内容中,只需对面向对象的三大特征建立初步的认识,做到“差不多理解”即可。

1.2.3 知识要点

(1) 面向过程是把问题的求解过程分解为多个步骤,而面向对象关注的是问题本身,将其抽象为一种数据类型。在面向对象的程序设计中,通过定义类类型来进行抽象。
(2) 在Python中一切皆对象
(3) 面向对象编程的核心是抽象,抽象即概括和归类,这里的概括是对共性的概括。
(4) 面向对象的三大特征:封装,继承,多态

1.2.4 最具实力的小班培训

来这里参加Python和Java小班培训的学员大部分都找到了很好的工作,平均月薪有11K,学得好的同学,拿到的会更高。由于是小班教学,所以薯条老师有精力把每位学员都教好。打算参加线下小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:

关注微信公众号.jpg












欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录