云计算百科
云计算领域专业知识百科平台

零基础Python:我的“面向对象”从一脸懵到真香之路

大家好,我是一个刚学Python不久的小白。在学会写 print("Hello World") 和 if…else 之后,我一度觉得自己已经算入门了。直到我碰到了面向对象这四个字。

好家伙,什么“类”、什么“对象”、什么“实例化”,每个字我都认识,但组合在一起,我脑子就宕机了。经过一个星期的痛苦挣扎,我终于感觉脑子里的那根筋搭上了。今天,我就用最通俗的大白话,把我理解的面向对象记录下来。如果你也是小白,希望这篇博客能让你少掉几根头发。

第一阶段:小白的困惑(我为什么要用这玩意儿?)

刚开始写代码,我特别喜欢把所有代码都堆在一起。比如要描述一台电脑,我就用字典:

要描述多台电脑,我就用列表套字典。

直到有一天,产品经理让我给“电脑”增加一个“开机”的功能。我傻眼了,字典里没法放函数啊!我只能写一堆def turn_on(computer):这样的函数,然后把字典传进去。

这样写虽然能跑,但总感觉怪怪的,数据和操作数据的函数是分开的,就像人是人,手是手,但手没长在人身上,用起来得自己拿着手往人身上安。

就在这个时候,大神告诉我:“你得用面向对象了。”

第二阶段:用“人类”的思维去理解“类和对象”

大神跟我说:面向对象的核心,就是模拟我们人类认识世界的方式。

什么是对象?你面前那个亮着屏幕的、能敲代码的物理设备,就是电脑对象。什么是类?就是图纸。世界上先有图纸(类),才能根据图纸造出实体(对象)。

我看还是不太懂,大神换了个更简单的例子——狗。

类就是一张制造“狗”的图纸。这张图纸上规定了:

(1)所有的狗都有属性(有什么):名字、年龄、毛色。

(2)所有的狗都有方法(能干什么):叫、吃饭、摇尾巴。

在Python里,定义一张“狗图纸”长这样:

注意那个self,我一开始特别烦它。大神说:你就把self当成“我自己”。谁调用我,我就是谁。

2. 对象(Object)—— 具体的实物

图纸有了,我现在要开始造狗了!

这一刻我豁然开朗!class就是造物主手里的模具,dog1和dog2就是生产出来的具体产品。
dog1有自己的名字,dog2也有自己的名字,它们互不干扰。而且,数据和功能打包在一起了(狗会叫自己名字,多自然)。

第三阶段:面向对象的三大法宝(封装、继承、多态)

学会了基本的类和对象,我信心大增。大神说,面向对象还有三个大招,学会了就能横行江湖。

1. 封装 —— 把秘密藏起来

封装的意思就是:把该藏的藏起来,把该露的露出来。

在代码里,我们使用__(双下划线)把属性变成私有的,不让外面直接乱改。

如果我们将最后一行代码改为-1500:

小白心得:封装的好处是防止别人把你代码里的关键数据改得乱七八糟,只能通过你允许的方法去操作,安全得很。

2. 继承 —— 站在巨人的肩膀上

继承太香了!你有没有发现,我们定义“中华田园犬”和“哈士奇”的时候,它们都会叫,都有名字。如果重新写一遍代码,那太Low了。

继承就是:我造一个爹(父类),儿子(子类)直接继承爹的本事,然后还能发展自己的特长。

小白心得:继承让代码复用变得极其简单。以后想新增一个“猪”类,直接继承Animal,省得重复造轮子。

3. 多态 —— 同一种行为,不同表现

多态听起来吓人,其实就是同一个方法,不同的对象调用,表现出不同的样子。

比如上面的例子,同样是eat()方法:

狗调用:旺财正在吃东西…

猫调用:咪咪高傲地舔了舔鱼…

这就是多态。它让程序变得更灵活,不需要知道具体的对象是什么,只要知道它有eat方法,直接调用就行,具体的细节由对象自己决定。

第四阶段:我小白的实战总结(真香定律)

现在我写代码,已经不习惯面向过程了,因为面向对象有三大好处:

(1)可维护性强:哪个类出问题了,我只改那个类就行,不会牵一发动全身。

(2)可复用性强:写好的类就像积木,这次项目用了,下次还能用。

(3)逻辑清晰:代码不再是面条式的一坨,而是像目录一样有条理,人.吃饭()、车.开动(),读起来就像读小说。

最后给小白的一点建议

如果你一开始也觉得面向对象难,别慌,这很正常!

(1)别死磕理论:先写起来,哪怕照着别人的代码敲一遍。

(2)联想生活:你手里水杯是对象,它的设计图是类;你手机是对象,它的说明书是类。

(3)先模仿:Python里到处都是对象,列表[1,2]其实是list类的对象,字符串其实是str类的对象。你一直在用面向对象,只是不知道而已!

好了,以上就是我从入门(还没到精通,但已经上路了)对面向对象的理解。
写这篇博客是为了加深自己的记忆,如果能帮到你,那就更好了!
如果有大牛路过发现我说的不严谨,还请轻喷,欢迎指正!

路漫漫其修远兮,吾将上下而求索。 写代码,开心最重要!我们下一篇见。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 零基础Python:我的“面向对象”从一脸懵到真香之路
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!