Python

您所在的位置:网站首页 复利有什么好处 Python

Python

2024-06-26 18:14:48| 来源: 网络整理| 查看: 265

类、对象在实际编程中有啥好处,为啥要用它们再给你解释怎么去理解它们

1.类的好处主要有

方便复用(如果你用函数写,就要复制整块代码,增加了代码量,增加了出错率)方便扩展(函数写段代码,若要升级、扩展,都十分复杂,容易出错,用类来扩展,则方便清晰)方便维护(因为类是把抽象的东西映射成我们常见的,摸得到的东西,容易理解,维护也方便)

举几个例子:

比如你是玩具厂的工程师,你要制作一个机器,可以批量制作鸭子形状的玩具,也许你的思路如下:

def makeDuckMoth(): #这里可以放其他制作细节 print('鸭子嘴巴制作完毕') def makeDuckEar(): #这里可以放其他制作细节 print('鸭耳朵制作完毕') def makeDuckEye(): #这里可以放其他制作细节 print('鸭眼睛制作完毕') def makeDuckHead(): #这里可以放其他制作细节 print('鸭头制作完毕') def makeDuckWing(): #这里可以放其他制作细节 print('鸭翅膀制作完毕') def makeDuckBody(): #这里可以放其他制作细节 print('鸭身体制作完毕') def makeDuckFoot(): #这里可以放其他制作细节 print('鸭脚制作完毕') def makeDuckMerge(): #这里可以放其他制作细节 print('鸭子组装完毕') makeDuckMoth() #制作鸭嘴巴 makeDuckEar() #制作鸭耳朵 makeDuckEye() #制作鸭眼睛 makeDuckHead() #制作鸭头 makeDuckWing() #制作鸭翅膀,注意,猪是没有翅膀的 makeDuckBody() #制作鸭身体 makeDuckFoot() #制作鸭脚 makeDuckMerge() #合并鸭子的各个部位,组装成最终鸭子

第二天,老板让你,制作猪形状的玩具,难道你的代码如下:

def makePigMoth(): #这里可以放其他制作细节 print('猪嘴巴制作完毕') def makePigEar(): #这里可以放其他制作细节 print(‘猪耳朵制作完毕’) def makePigEye(): #这里可以放其他制作细节 print(‘猪眼睛制作完毕’) def makePigHead(): #这里可以放其他制作细节 print(‘猪头制作完毕’) def makePigBody(): #这里可以放其他制作细节 print(‘猪身体制作完毕’) def makePigHand(): #这里可以放其他制作细节 print(‘猪手制作完毕’) def makePigFoot(): #这里可以放其他制作细节 print(‘4只猪脚制作完毕’) def makePigMerge(): #这里可以放其他制作细节 print(‘猪组装完毕’) makePigMoth() #制作猪嘴巴 makePigEar() #制作猪耳朵 makePigEye() #制作猪眼睛 makePigHead() #制作猪头 makePigBody() #制作猪身体 makePigFoot() #制作4只猪脚 makePigMerge() #合并猪的各个部位,组装成最终猪

这样来,你确实完成了工作,但有没有觉得 有点累?

是不是觉得,猪和鸭子有很多相似之处?

如果你学会了,类的用法,可以非常轻松,下面是类的用法

类就像是基因的制造图纸,我们人类,生的小孩,也是两只手,两只脚,一个嘴巴,除非变异,否则不会多出一只脚的,之所以这样有序的发展,是因为我们身体里,有基因这张图纸控制着我们的繁衍

现在我们给上面例子中的制作鸭子、猪建立一个通用的制作基因表,利用他们相似制作流程 建立基因表

class Animal(object): ''' 猪和鸭子的基类(基因图纸表) ''' def __init__(self, name): # 实例化的时候传入要制作的东西名字,如猪、鸭子 self.name = name def makeMoth(self): #这里可以放其他制作细节 print(self.name+'的嘴巴 制作完毕') #这里的self.name就是获取我们传入的name def makeEar(self): #这里可以放其他制作细节 print(self.name+'的耳朵 制作完毕') def makeEye(self): #这里可以放其他制作细节 print(self.name+'的眼睛 制作完毕') def makeHead(self): #这里可以放其他制作细节 print(self.name+'的头 制作完毕') def makeBody(self): #这里可以放其他制作细节 print(self.name+'的身体 制作完毕') def makeFoot(self): #这里可以放其他制作细节 print(self.name+'的脚 制作完毕') def makeMerge(self): #这里可以放其他制作细节 print(self.name+'合并完毕') def makeAll(self): # 一条龙。直接跑完整个流水线 self.makeMoth() self.makeEar() self.makeEye() self.makeHead() self.makeBody() self.makeFoot() self.makeMerge()

可以看到,上面的图纸里,我们没有放 makeWing() #制作翅膀,那是因为猪不会飞,我们只放猪和鸭子共有的、相同的东西

接下来,用这个类,继承给Pig,代码如下

class Pig(Animal): # 括号里写Animal,意思是Pig继承Animal的所有特性,类似你继承你老爸的基因 def makeMoth(self): #这里加详细的猪嘴巴制作流程,如长嘴巴,有两个孔 print(self.name+'的嘴巴 制作完毕') def makeEar(self): #耳朵大大的 print(self.name+'的耳朵 制作完毕') def makeEye(self): #眼睛小小的 print(self.name+'的眼睛 制作完毕') def makeHead(self): #很大的头 print(self.name+'的头 制作完毕') def makeBody(self): #略 print(self.name+'的身体 制作完毕') def makeFoot(self): #略 print(self.name+'的脚 制作完毕') def makeMerge(self): #略 print(self.name+'合并完毕')

在class Pig中,如 makeMoth里面,只加入详细制作猪嘴巴的代码,不要把制作猪头的代码放这里哦

你发现,class Pig中 没有了这2段代码,这是因为,如果你继承别的对象,如Animal后,若完全不修改某些方法属性,就可以不写出来(实际还是存在Pig中的)

def __init__(self, name): self.name = name def makeAll(self): # 一条龙。直接跑完整个流水线 self.makeMoth() self.makeEar() self.makeEye() self.makeHead() self.makeBody() self.makeFoot() self.makeMerge()

写出来意味着,你要覆盖以前代码块里的行为,如 我们写出了makeMoth,makeEar ...

意味着我们要把makeMoth里的制作细节改成我们想要的,

猪和鸭子的嘴巴长得不一样,制作细节肯定不同,对吧?

最后我们用以下代码,让机器开始造猪

pig1 = Pig('猪') #实例化,相当于怀孕 pig1.makeAll() # 开始造猪,相当于在子宫里形成整体

现在开始造鸭子的图纸,继承Animal,覆盖某些代码

class Duck(Animal): # def makeMoth(self): #这里加详细的鸭子嘴巴制作流程,如长嘴巴,嘴巴硬 print(self.name+'的嘴巴 制作完毕') def makeEar(self): #耳朵很小 print(self.name+'的耳朵 制作完毕') def makeEye(self): #眼睛小小的 print(self.name+'的眼睛 制作完毕') def makeHead(self): #头很小 print(self.name+'的头 制作完毕') def makeBody(self): #略 print(self.name+'的身体 制作完毕') def makeFoot(self): #略 print(self.name+'的脚 制作完毕') def makeMerge(self): #略 print(self.name+'合并完毕') def makeWing(self): #增加翅膀的制作流程 #略 print(self.name+'的翅膀 制作完毕') def makeAll(self): #因为增加了翅膀,所以要覆写这个函数 self.makeMoth() self.makeEar() self.makeEye() self.makeHead() self.makeBody() self.makeFoot() self.makeWing() #插入翅膀制作流程 self.makeMerge()

然后用以下代码实例化,开始做鸭子

duck1 = Duck('鸭子') duck1.makeAll()

以后我们要狗、牛、企鹅,都可以从Animal继承, Animal给我们提供了一个框架,我们只需要在这个框架上,扩展,延伸 就可以很方便的做出任何东西,这就是类的魅力

如果你要做个别的咋办?

可以建立一个 足够通用基类,慢慢扩展, 类似人类的老祖宗,最开始是微生物,后来是猴子

class Weishengwu(object): '''假设一开始的老祖宗只会吃东西''' def __init__(self, name): self.name = name def eat(self): print('吃东西') #开始进化成鱼类 class Fish(Weishengwu): '''在老祖宗只会吃的基础上,学会了移动''' def move(self): print('移动') #开始进化成猴子 class Houzi(Fish): '''在鱼的基础上学会了爬树''' def __init__(self, name, love): # 以前只有名字,现在有了爱好,或许是吃桃子、或许是荡秋千 self.name = name self.love = love def eat(self): #覆写,因为吃东西的方式可能和鱼类不一样了 print('牙齿吃东西') def move(self): #覆写,不是在水里移动了,是陆地上移动 print('脚移动') def Pashu(self): print('爬树') #你可以继续进化,继续给他增加任何功能

希望可以帮到你



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭