教女朋友学Python(10)——我都最后一期了,你都不知道对象是什么

编程是一门要动手的学问,我在必要的地方用动态截图是可以保证阅读的完整性,但是那仅仅是我敲的代码。

这是我们教女朋友学Python基础篇的最后一期了,还剩下一个特别大的话题没有写,这个东西叫面向对象。面向对象的程序设计也是一个可以写一本书的内容,我们专门用一期来说说面向对象的基础理念。

我们先说与面向对象相对应的,叫面向过程,我们在之前的代码中,想下载网上的图片,就先构造了一个搜索网址,然后通过网址下载数据,再通过正则表达式把数据里面我们需要的图片网址提取出来,再从图片的网址下载图片,整个流程是一步一步的。就好像我们每天先起床,然后洗漱,然后整理妆容,然后上班,这就是一个过程一个过程的执行的。其实这个过程耶没什么不好,我们把起床,洗漱,整理妆容,上班全部都封装成函数,然后每天要做的事情就是起床(),洗漱(),整理妆容(),上班(),用起来也很方便。

但是如果有朝一日,女朋友变成了老婆,生了两个小宝宝。然后每天哥哥要起床、洗漱、整理、上小学,妹妹要起床、洗漱、整理、上幼儿园,老公要起床、洗漱、整理、送女儿上幼儿园、送儿子上小学、送老婆上班、上班,老婆要起床、洗漱、整理、给女儿打扮、上班。

如果每个函数都定义一遍,那就真是我的天,要写那么多,而且还有很多重复的。为了应对这种情况,那就不要具体到我,我老婆,我儿子,我女儿,而要抽离出去,到丈夫,妻子,小男孩,小女孩。丈夫和妻子有共同点,又可以抽离到成人,小女孩和小男孩可以抽离到小孩,成人和小孩又可以抽离到人。这种抽离出来的东西,就叫类。而通过这个类,具体出来的东西,比如通过小女孩这个类,具体出来的我的女儿,就叫对象。

我们可以在类里面定义要做的事情,比如,我们先定义一个叫人的类,在人的类里面定义出函数起床(),洗漱(),整理()(类里面的函数,一般叫方法),这是每个人都要做的。因为成人是属于人的,那么我们定义成人类的时候,可以继承人里面的一些方法,我们只需要在成人类里面定义一个上班()的方法就可以了。再到妻子,又可以继承成人里面的一些方法,只需要定义给女儿打扮()这一个方法就可以了。

使用的时候,我们需要先通过妻子这个类,构造出一个具体的妻子,比如我的妻子 =  妻子()。起床的时候,就是我的妻子.起床(),就可以了。更棒的是,以后家家户户都可以用我的方法,你的妻子= 妻子(),然后你的妻子.上班()。而你不需要定义这个类,也不需要定义里面的方法,真正做到了老吾老以及人之老,幼吾幼以及人之幼,妻吾妻以及人之妻,真是善莫大哉呀!

还记得我们再以前的教程里出现的那些点么?现在出现了吧。

面向对象编程的思想差不多就是这样了,我们回到Python代码,把上面的过程用代码写出来:
class Human(object):
            def getUp(self):
                print("我起床啦")
            def wash(self):
                print("我洗漱好啦")
            def clean(self):
                print("我整理好了")


class Adult(Human):
            def Work(self):
            print("我上班啦")

class Wife(Adult):
            def CleanDaughter(self):
            print("我给女儿整理好啦")

我们定义了三个类,分别是Human,Adult,Wife,每个类里面分别又几个方法。可以看到,定义类的时候,是已class开头,后面跟类名,加一个括号,括号里面跟着他要继承的类名,object是一个最基础的类,所有的类最初都继承自object。里面的方法跟平常的函数有一点不同的地方,就是第一个参数,必须是self,这个参数一定要有,而且必须排在第一个。使用的时候:
mywife = Wife()
mywife.getUp()
mywife.wash()
mywife.clean()
mywife.CleanDaughter()
mywife.Work()

一天上午就完成了,Wife是抽象的类,mywife就是具体的实例对象。面向对象的威力不在于处理一个两个具体的事,试想一下,如果一个公司管理一万个员工,每个员工有相同的东西,也有不同的东西,要按每个人的工作流程写一套完整的面向过程的内容,工作量得多大。但是如果用面向对象,要实现每个人的工作流程,就会简单得多,而且很方便调整,根本不用改具体的代码,只需要改调用的代码就可以了。

类除了有方法外,还有属性。比如不同的员工有不同的名字把,就可以定义self.name= "张东西"。现在知道self是什么了把,实际上就是代表当类实例成具体的对象之后的那个东西。只不过mywifi是在外的,self是在内的,在运行的过程中,这两个东西指向内存里的同一块地方。

面向对象的更多内容我就不说了,内容不少,要学的很多,核心的面向对象的思想,其实就这样了。

《教女朋友学Python》基础篇十期完结撒花,接下来,我将给自己挖一个极大的坑。

欢迎关注我的微信公众号获取最新文章:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值