更多教程请私信~

来源:思路实验室

作者:室长

大家好,欢迎收看思路实验室出品的Python入门教程,我是室长。

书接上文,我们面对动物园甲方爸爸的要求有了一定的思路,它可以是这样的:

动物园所有的哺乳动物都有姓名、性别、年龄,那么我们就可以定义一个哺乳动物类,语句是这样写的:

我们看第一行,class 哺乳动物() :这句定义了一个叫哺乳动物的类。这个结构很像我们之前定义函数的def语句,不同的是定义类使用的关键字是class。而在这个括号里填的可不是参数,填什么我们后边再说。

再看第二行,似乎我们在定义一个函数。在类里也可以定义函数吗?当然!而且在类里定义的函数还有个更好理解的名字,叫方法。所以我们现在是在定义一个方法。

那def后跟的__init__是什么意思呢?使我们自己起的炫酷的方法名吗?不是的,可以看到语法高亮小秘书已经给它涂上了彰显尊贵的亮紫色,表明了它不平凡的血统。

没错,__init__是一个内建函数,是initialize的缩写,意思是初始化。根据一个抽象的概念上的类创建一个具体的实在的对象,这个过程叫实例化,而在实例化的过程中,就会调用__init__函数。

看一下__init__后边的参数坑位,姓名、性别、年龄都是我们要定义的,没什么好说的。但这self是怎么回事?还被涂上了暗紫色?

还接着我们上一期的例子来看。我们要对大象分情况来管理,有一头大象叫刘老六,我们希望就这只具体的、特定的大象叫刘老六,性别公,年龄53,而不是所有的大象呼啦一下子都变成刘老六了。所以在实例化刘老六的时候,我们希望__init__函数作用到对象本身,所以在参数坑位首位的是代表实例本身的self。

那我们来看第三行及后边的代码:self.姓名 = 姓名,看到一个等号想到什么?赋值!而self.姓名,看到点,回想我们之前在第十期讲的,可以把点理解为什么?的!也就是说self.姓名相当于实例自己的姓名。

后边几行都一样,而自己的姓名、性别、年龄都被称为自己的属性,即对象属性。而在最后一行,我们调用一下自己的姓名属性来打印一行字。

但这还不算完,我们目前只定义了一个类,还没有用这个类去实例化一个对象:

有同学提醒了:哎室长,self那个坑位没填!

这说明这位同学很仔细地学习了函数,但在这里self默认是对象自己,所以不需要填写self坑位。

我们来运行一下:

可以看到,在我们实例化对象时,__init__函数就被执行了,除了在给刘老六的属性赋值,还打印出了一句话。

那我们如何知道刘老六的年龄呢?既然self.年龄是自己的年龄,那刘老六的年龄就是刘老六.年龄:

是不是非常清晰明了?

在哺乳动物之下,我们还要定义一个大象的子类,而定义的属性是哺乳动物不一定确定的(比如成年的年龄、要给它送的水果等),我们可以这样写:

这里第一行 class 大象后边的括号我们填写了刚才定义的哺乳动物类。所以这个括号里应该填写的是这个类要继承的类(即父类)。

第二行没的说了,跟刚才一样。

第三行就比较有意思了,在大象这个类实例化时,先要调用父类哺乳动物的__init__函数。刘老六它首先是个哺乳动物,其次才是大象。如果我们要再写一个骆驼的类,同样也可以调用哺乳动物的__init__函数。有了这种继承方法,我们就不用一遍一遍地重复写了。

第四行定义一个成年年龄的属性,方便我们后边判断动物是否成年。

后边的就没有什么问题了,如果看不懂可以重新看一看第七期关于if语句的介绍。

我们来运行一下:

没有问题,是我们想要的结果。

那我们继续,这下我们可以走完装大象的过程了。

因为对于动物园来说,我们不管是装大象还是装骆驼还是以后装个老虎狮子,流程都是一样的,只不过一些判据、给的东西不一样,所以我们可以把装动物的方法写到哺乳动物类里:

我们先写了一个确定容器的函数,函数的参数坑位只有一个self,因为这个函数里所有需要用到的属性都是对象自身的属性,所以只写一个self就够用了。

另外很多属性明明是我们在大象这个子类里定义的,在哺乳动物这个父类里也能调用吗?答案是可以的,因为在调用这个函数之前我们已经对大象的对象进行了初始化,它所调用的属性就有了值。

函数的内容其实和我们上一期写的伪代码差不多,这里就不再展开了。我们调用一下刘老六的全流程方法:

我们在第十二期的末尾遇到了这种用法(file.split()),当时的file是文件名的字符串。想到什么了吗?

字符串也是对象!我们从一开始就在使用对象了!而且不光是字符串,在Python里,万物皆是对象,格局一下子就大了有木有!

但我们今天不做进一步的阐释了,只要知道在第十二期我们是在使用字符串的方法就可以了。

回来继续运行程序:

完美!

我们再搞一只大象:

判断得非常准确!

那我们再去搞骆驼,一下子就变得简单了,只要写一个骆驼的类就可以:

是不是非常简单省事!

可以想见,用不了多少代码,我们就可以把整个动物园的动物都安排上。

这一期我们了解了如何动手去写一个类,如何从类去实例化一个对象,如何调用对象的属性和方法,如何实现类的继承。这些内容可以让我们的代码变得更加简洁,让我们能够以更懒的方式去完成任务。

但我们还是有一些任务目标没有达到,比如动物园的冰柜不够用的这种情况。不管是冰柜还是冰箱微波炉,都应属于整个动物园共用的设备。那么对于类来说,有没有这样一个共用的量呢?请关注下期:动物园举办联欢大会哪个动物没有来?类变量。

【Python教程】十四、找不到对象?用Python自己写一个|类与对象(二)相关推荐

  1. 自学Python第十四天- 一些有用的模块:urllib、requests 网络编程基础,向爬虫靠拢

    自学Python第十四天- 一些有用的模块:urllib.requests 网络编程基础,向爬虫靠拢 fake_useragent 库 安装 fake_useragent 使用 urllib 库 ur ...

  2. Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议

    Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 原文:Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议 在上一篇中,留下了许可协议的问题,目前已经解决.感谢网友武全的指点 ...

  3. akka学习教程(十四) akka分布式实战

    akka系列文章目录 akka学习教程(十四) akka分布式实战 akka学习教程(十三) akka分布式 akka学习教程(十二) Spring与Akka的集成 akka学习教程(十一) akka ...

  4. 【Visual C++】游戏开发笔记四十六 浅墨DirectX教程十四 模板测试与镜面特效专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处.   文章链接: http://blog.csdn.net/zhmxy555/article/details/8632184 作者:毛星云( ...

  5. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  6. 孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式

    孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系 ...

  7. Cesium教程(十四):简易三维模型的可视化

    Cesium教程(十四):简易三维模型的可视化 效果预览 1.高效三维数据格式:3D Tiles 3D Tiles是Cesium提出的处理三维地理大数据的数据格式,目前已是OGC数据标准之一,并在We ...

  8. Python教程(四)--变量以及类型、打印名片

    转载请标明出处: 原文发布于:浅尝辄止,未尝不可的博客 https://blog.csdn.net/qq_31019565 Python教程(四)–变量以及类型.打印名片 变量以及类型 是用来存东西的 ...

  9. Python—实操小实验之人机PK游戏(终极版本—应用类与对象的知识点应用)

    Python-实操小实验之人机PK游戏(终极版本-应用类与对象的知识点应用) 人机PK游戏所需要的基础元素如下: ①要有玩家.敌人.生命值.攻击力,还要有计分: ②要可以互相进行攻击,攻击之后生命值要 ...

最新文章

  1. 推荐一位玩自动化的 Python 爱好者
  2. 用Python分析了十年电影票房,原来我错过了这么多好电影!
  3. python多线程编程: 条件变量同步
  4. js解析url query_js如何解析url
  5. 多个php版本的composer使用
  6. dfs中return回溯问题
  7. alertdialog android api 11,android – 设备api级别11的DialogFragments
  8. POJ 1177 Picture
  9. PAT甲题题解-1124. Raffle for Weibo Followers-模拟,水题
  10. 循环机换变速箱油教程_变速箱油多久换?很多老司机都可能不知道
  11. PE启动盘安装操作系统
  12. GraphPad Prism 统计教程 :高斯分布
  13. 揭秘月薪最容易过万的工作,男默女泪!
  14. 雅虎新频道Buzz截图,Digg竞争者?
  15. 国内十大白银期货APP最新排名
  16. Python基础Pro | (17) 电子邮件
  17. 【Django】Python+Django 图文教程
  18. 【历史上的今天】8 月 25 日:Linux 诞生;我国第一个计算机科学技术研究所成立
  19. python中用于释放类占用的资源的方法是()_mooc大学英语词汇期末答案
  20. 启迪环境半年亏损39亿融资陷停滞 计提资产减值准备超34亿元

热门文章

  1. 华为服务器_RH2288H V3介绍
  2. Linux、Qt等安装镜像下载--清华大学开源软件镜像站
  3. android实时抓取屏幕文字,Android录制屏幕的实现方法
  4. 计算机系统--机器指令与汇编
  5. Matlab/Simulink 自动代码生成 基于模型设计学习教程(2)---- 闪烁灯实验
  6. EMC trainning杂谈
  7. 台湾科技挣扎,人祸大于天灾?
  8. Linux ARM平台开发系列讲解(IIO子系统) 2.8.1 IIO驱动开发分析
  9. 酷客多荣获“2018年度中国最具创新力小程序品牌”奖
  10. python迅雷下载任务出错_迅雷下载时提示“任务出错”怎么办?(附多种解决方法)...