概述
更多教程请私信~
来源:思路实验室
作者:室长
大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。
上一期我们凭借前边这些浅显的知识就写出了一个很有用的小程序,大家是不是一下子就获得信心了?
没错,其实Python就是这么简单。
但你以为这就是全部了?那你就大错特错了!(虽然室长以前就只靠着这点水平写了很多程序……)
我们只是介绍了Python的冰山一角。
回想一下我们学习编程的初衷,那就是懒,但是懒无止境,没有最懒,只有更懒。而我们现在所学到的东西不支持我们做到更懒的地步。
基于我们之前的“把大象装冰箱”举个例子:
动物园颁布了新的管理条例:15岁以上的象算成熟大象,公大象要装到冰柜里,母大象要装到对开门冰箱里,小象要装到微波炉里。每个装象的容器外边都要贴上大象的名牌。装象期间给公象一个苹果,给母象一个橘子。请将动物园10只大象按照规则关好。
那我们这个程序要怎么写?
首先可知,这回的大象不再是我们之前所说的'大象'了,它从一个字符串变成了一个更加具体的东西,每只大象都有它的名字、性别和年龄。那么我们应该怎么定义每个大象呢?可以这样吗:
A大象的名字 = '刘老六'
A大象的性别 = '男'
A大象的年龄 = 53
B大象的名字 = ……
可以是可以,但是这样定义10个大象光代码就得30行,累不累啊?而且变量之间都是相互独立的,相互之间没有关联,搞得跟个散装大象一样。
有的同学就说了:这种情况是不是可以用字典?
这些同学很聪明,用字典当然可以,比刚才那种情况好多了:
A大象 = {'姓名':'刘老六','性别':'公','年龄':53}
B大象 = ……
一下子变得简洁了,而且不同属性之间有了相关性(所有属性都关联到同一只象),那我们继续。我们把规则拆分成三个部分:装大象,贴名牌,放水果。
对于大象该装到那里我们先要判断它的年龄是不是大于等于15岁,然后判断它是公是母,用if语句的话就需要嵌套或者“与”运算:
if 大象['年龄'] >= 15 and 大象['性别'] == '公':
把大象装到冰柜里
elif 大象['年龄'] >= 15 and 大象['性别'] == '母':
把大象装到对开门冰箱里
else:
把大象装到微波炉里
再贴名牌:
if 大象['年龄'] >= 15 and 大象['性别'] == '公':
把大象装到冰柜里
把大象['姓名']贴到冰柜上
elif 大象['年龄'] >= 15 and 大象['性别'] == '母':
把大象装到对开门冰箱里
把大象['姓名']贴到对开门冰箱上
else:
把大象装到微波炉里
把大象['姓名']贴到微波炉上
麻不麻烦?太麻烦了这个。有懒的同学已经想出办法了,把装大象的容器也作为一个键值对写进字典行不行?当然行!
if 大象['年龄'] >= 15 and 大象['性别'] == '公':
大象['容器'] = 冰柜
elif 大象['年龄'] >= 15 and 大象['性别'] == '母':
大象['容器'] = 对开门冰箱
else:
大象['容器'] = 微波炉
把大象装到大象['容器']里
把大象['姓名']贴到大象['容器']上
最后放水果,这回又得再判断一遍大象的公母,因为之前我们没对小象做判断:
if 大象['年龄'] >= 15 and 大象['性别'] == '公':
大象['容器'] = 冰柜
elif 大象['年龄'] >= 15 and 大象['性别'] == '母':
大象['容器'] = 对开门冰箱
else:
大象['容器'] = 微波炉
if 大象['性别'] == '公':
大象['水果'] = 苹果
else:
大象['水果'] = 橘子
把大象装到大象['容器']里
把大象['姓名']贴到大象['容器']上
给大象一个大象['水果']
这下差不多了吧!确实,这些已经足够我们执行这个规则了,虽然看起来有点凌乱。只要我们将初始数据定义好,然后进行for循环就可以了。
但是动物园突然通知,要给骆驼也来一套类似的规则,但给水果只给仙人掌……
但是动物园突然通知,冰柜不够用了,装不完的也装对开门冰箱里……
但是动物园突然通知,要统计每种容器里放了多少动物……
但是动物园突然通知……
这时候你如果想改代码,可就不是一行两行的事了,可能又要加班加点熬夜了,头发又哗哗地掉了好几根。
所以我们需要一种灵活的表达方式,来对大象的一系列特征进行操作。而用我们之前学到的数据类型已经不能满足我们了。而Python的类与对象,很好地解决了这个问题。
什么是类?其实Python中的类和我们生活中认知的类是很相似的。比如说象,一般情况下大象都会有长鼻子大耳朵大粗腿,当然也有我们刚才说的年龄性别,这就可以是一个类,它不具体指哪只大象,而是一个宽泛的概念。
如果我们把这个范围缩小一些,从生物学的角度讲大象的种类分亚洲象和非洲象,亚洲象是不是一个类呢?当然,同理非洲象也一样。
相反,如果我们把这个范围扩大一些,大象属于哺乳动物,那哺乳动物是不是一个类呢?更是了。
可以看到,刚才举的例子中,几个类是有包含关系的:
因此,大的,包含别的类的被称为父类,而小的,被别的类包含的被称为子类。
在这里:
哺乳动物是大象的父类,大象是哺乳动物的子类;
大象是亚洲象的父类,亚洲象是大象的子类。
但是:
哺乳动物是亚洲象的父类的父类,而不是亚洲象的爷类(没有这种说法)!
而这种父类子类关系意味着什么呢?哺乳动物都有性别年龄,那大象有没有性别年龄?当然有,这都不用问。同样,大象都有长鼻子大耳朵,亚洲象也一样。所以抽象来看,父类的特征被子类继承了,而子类相当于在父类的基础之上又添加或修改了一些特征。这和Python中的类是一样的。
但不管是哺乳动物还是大象还是非洲象,父类还是子类,我们指的都是一个宽泛的范围,不是具体指的哪一只。而在实际操作中,我们需要针对具体某一只的情况去对它进行相应的处理。那这时候我们就不再是凭空去创造一只大象了,而是可以根据大象这个类所拥有的特征去创造一只大象,而创造的过程被称为实例化,实例化的大象(可能名叫刘老六)被称为对象。
有了这些知识,我们就有思路挑战动物园的BT任务了:
但这期篇幅太长内容太多压缩不完随便开一个头又一两千字出去了所以这期就到这里请关注下期:找不到对象?用Python自己写一个|类与对象(二)
最后
以上就是柔弱裙子为你收集整理的【Python教程】十三、我连对象都找不到还让我用对象?类与对象(一)的全部内容,希望文章能够帮你解决【Python教程】十三、我连对象都找不到还让我用对象?类与对象(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复