【无为则无心&Python基础】— 50.Python面向对象(一):面向对象编程

1、面向对象编程的概念

  • Python从设计之初就已经是一门面向对象的语言,正因为如此,我们肯定听过Python中一切皆对象的说法。
  • 面向对象编程(Object-oriented Programming,简称 OOP),是一种程序设计思想。
  • 面向对象编程把对象作为程序的基本单元,一个对象包含了数据(属性)和操作数据的函数。
  • 在面向对象的设计思想中,将程序视为多个对象共同协作的结果。程序被划分为多个子模块,再由多个对象完成各自模块最终实现程序的功能。
  • 面向对象编程,是一种封装代码的思想。
  • 面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。

2、面向对象编程和面向过程编程的区别

(1)面向过程编程

面向过程的程序设计把函数作为程序的基本单元。程序设计时,编写一组一组的函数,然后一步一步按照顺序的执行各个函数,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。

面向过程编程,核心是"过程",关注的是解决问题的步骤,即先做什么再做什么。面向过程的编程就像一个流水线,是一种机械式的思维。若程序一开始是要着手解决一个大问题,面向过程的编程思维会把一个大问题分解为很多个小问题,这些小问题还可以继续分解,直到小问题足够简单可以在一个小步骤中解决。

  1. 优点:
    • 极大的降低了写程序的复杂度,只需要顺着执行的步骤,堆叠代码即可。
    • 复杂问题流程化,进而简单化。
  2. 缺点:
    • 一套流水线或者流程就是来解决一个问题,如果其中一个方法修改了,那其他组件也要跟着作相应的修改。
    • 也就是出现问题,牵一发而动全身。

(2)面向对象编程

而面向对象的程序设计把对象作为程序的基本单元,程序设计时,设计许多的对象(类创建而成),每个对象都有能力解决一些相应的问题。而我们面向对象编程是基于面向过程编程的,类是将功能(小步骤)进行了封装,只要找到了具体的类,创建出对象,就可以调用其中的具体功能。

面向对象是用来解决问题的一种思维模式,在以后开发中,先找对象,调用对象中的具体功能。如果真的没有能够完成需求的对象,这时就自己定义类,并将所需的功能定义到对象中,方便以后使用。

  1. 优点
    • 面向对象是一种更符合人们思考习惯的思想。
    • 面向过程中更多的体现的是执行者,面向对象中更多的体现是指挥者,指挥对象做事情。
    • 面向对象将复杂的问题简单化。
    • 由于面向对象有封装、继承、多态性的特性,使系统更加灵活、易维护、易复用、易扩展,可以设计出低耦合的系统。
  2. 缺点:
    • 性能比面向过程低。
    • 所谓有得必有失,但在如今硬件疯狂发展,系统又越来越复杂的情况下,权衡利弊,我们选择面向对象编程。

3、举例理解面向对象

面向对象是一种抽象化的编程思想,很多编程语言中都有的一种思想。

(1)需求

例如:洗衣服

思考:几种途径可以完成洗衣服?

答: 手洗 和 机洗。

(2)面向过程洗衣服

手洗就相当于面向过程洗衣服:

  • 找盆
  • 放水
  • 加洗衣粉
  • 浸泡
  • 搓洗
  • 拧干水
  • 倒水
  • 晾晒
  • 收起叠好

在经历这么多步骤后,你终于把衣服完了,但是自己已经精疲力尽。

(3)面向对象洗衣服

机洗就相当于面向对象洗衣服。

这个洗衣机就是对象,衣服放进洗衣机中:

  • 开启洗衣机(类创建创建对象)
  • 洗衣服(调用对象中的方法)
    • 洗衣机--加水
    • 洗衣机--加洗衣粉
    • 洗衣机--浸泡
    • 洗衣机--搓洗
    • 洗衣机--脱水
    • 洗衣机--排水
    • 洗衣机--烘干
  • 关闭洗衣机(程序执行结束收起衣服)

你坐在窗边看着夕阳,感叹生活真是太美好了!

(4)总结:

思考:对比两种洗衣服途径,哪种方式更简单?

答:机洗更简单。

机洗只需要找到一台洗衣机,加入简单操作就可以完成洗衣服的工作,而不需要关心洗衣机内部发生了什么事情。

面向对象就是将编程当成是一个事物,对外界来说,事物是直接使用的,不用去管他内部的情况。而编程就是设置事物能够做什么事。

4、Python的面向对象编程

面向对象编程是利用对象来创建各种模型,来实现对真实世界的描述。

使用面向对象编程的原因:

  • 一方面是因为它可以使程序的维护和扩展变得更简单,并且可以大大提高程序开发效率 。
  • 另外,基于面向对象的程序可以使它人更加容易理解你的代码逻辑,从而使团队开发变得更从容。

5、面向对象的几大核心特性

  1. Class 类:一个类指相同事物相同特征提取,把相同的属性方法提炼出来定义在类中。
  2. Object 对象:一个对象是类的实例,对象是具体的,类是抽象。
  3. 封装:对外部世界隐藏对象的工作细节。
  4. 继承:一个子类继承基类的字段和方法。
  5. 多态:对不同类的对象使用同样的操作。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容