第四十五节 方法链Method Chaining

  • 前言
  • 实践

前言

方法链是指一个对象一次调用其自身的多个方法,通常写作对象.方法1.方法2。由于这种调用方法看起来像一个链条,所以我们将其称作方法链。通过方法链我们可以简化代码。

实践

我们这里先定义一个名为Animal的类,它包含三个方法,分别是eat()sleep()run()

class Animal():def eat(self):print("The animal is eating")def sleep(self):print("The animal is sleeping")def run(self):print("The animal is running")

我们尝试通过方法链的方式逐次调用该类的三个方法:

animal = Animal()
animal.eat().sleep().run()
>>> AttributeError: 'NoneType' object has no attribute 'sleep'

可见程序报错了,这是因为代码执行完animal.eat()后返回None,而None不包含任何方法,所以无法调用sleep()方法。为了避免这个问题,我们需要给每个方法返回self,也即类本身:

class Animal():def eat(self):print("The animal is eating")return selfdef sleep(self):print("The animal is sleeping")return selfdef run(self):print("The animal is running")return self

此时我们再对类进行实例化,就能调用其多个方法了:

animal = Animal()
animal.eat().sleep().run()
>>> The animal is eating
>>> The animal is sleeping
>>> The animal is running

以上便是方法链的全部内容,感谢大家的收藏、点赞、评论。我们下一节将介绍super()函数(Super Function),敬请期待~

Python编程基础:第四十五节 方法链Method Chaining相关推荐

  1. Python编程基础:第二十五节 args参数*args

    第二十五节 args参数*args 前言 实践 前言 我们目前学习到的函数的参数个数都是固定的,那么我们是否可以指定任意多个参数呢?其实是可以的,这里就用到了args参数,它可以将用户指定的任意多个参 ...

  2. Python编程基础:第十五节 二维列表2D Lists

    第十五节 二维列表2D Lists 前言 实践 前言 列表中的元素可以是任何形式,整型.浮点型.字符串型,甚至是一个列表.当列表的元素也是列表时,我们将其称为二维列表. 实践 我们先来创建多个一维列表 ...

  3. Python编程基础:第二十九节 异常Exception

    第二十九节 异常Exception 前言 实践 前言 我们在写代码时不可避免地会出错,这时候编译器便会抛出异常并中断程序的执行.针对这种情况,我们可以采用异常处理的方式捕捉程序中的异常信息,并将异常信 ...

  4. Python编程基础:第十九节 索引Index Operator

    第十九节 索引Index Operator 前言 实践 前言 我们在字符串学习过程中已经接触过索引的相关内容,我们在这里做一个小结,Python中的索引分为两部分,一种是从左向右,从0开始依次递增,例 ...

  5. Python编程基础:第十六节 元组Tuple

    第十六节 元组Tuple 前言 实践 前言 我们这一节来学习一个与列表非常相似的数据结构--元组.需要注意的是元组定义好以后,其中的元素是不能改变的,并且所有元素是有序排列的, 实践 我们先来创建一个 ...

  6. Python编程基础:第二十六节 kwargs参数**kwargs

    第二十六节 kwargs参数**kwargs 前言 实践 前言 上一节我们尝试传入任意多的参数,我们这一节来学习传入任意多具有参数名称的参数.kwargs参数将用户传入的参数打包为字典传入函数中用于进 ...

  7. 深入理解python.md_跟黄哥学python序列文章之python方法链(method chaining)

    跟黄哥学python序列文章之python方法链(method chaining) 写这篇文章来由,有朋友说下面这样的代码看不懂. choice = raw_input("please in ...

  8. 第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

  9. python输入123输出321的编程_第2章 Python编程基础知识 第2.1节 简单的Python数据类型、变量赋值及输入输出...

    第三节 简单的Python数据类型.变量赋值及输入输出 Python是一门解释性语言,它的执行依赖于Python提供的执行环境,前面一章介绍了Python环境安装.WINDOWS系列Python编辑和 ...

最新文章

  1. matlab实验是啥,matlab实验心得体会
  2. matlab光学远轴光的折射,matlab模拟光的反射折射
  3. CS1704问题汇总
  4. PHP与MySQL设计模式:代理模式
  5. pytorch固定BN层参数
  6. 基于Docker swarm 集群搭建SSR 学习
  7. scsi服务器硬盘如何用,实战:不重启服务器添加scsi硬盘
  8. Flutter HotRealod详解
  9. 怎样把可调DC-DC变身为数控稳压电源
  10. 程序设计基础java_Java程序设计基础
  11. linux proftpd 用户,proftpd 虚拟帐号的建立及quota
  12. 等保三级网络安全相关设备加固笔记
  13. 一键解锁iPhone屏幕密码
  14. Visual Studio 2008 官方破解版
  15. 基于Matlab/Simulink的简单三相交流系统扫频仿真
  16. 清华小学上册计算机教学案例,案例分析 清华小学 罗远琴
  17. Shopify开店建站营销推广卖家平台后台中文指南 – Test orders / 测试订单
  18. Java-万物皆对象
  19. 独立开发者如何笑傲江湖
  20. 教你用ps如何将图片、文字做出模糊斑驳的作旧效果

热门文章

  1. 802.11协议基础
  2. CSP认证201512-2 消除类游戏[C++题解]:模拟
  3. 开服侠显示服务器已停止,蜘蛛侠:极限(已关服)无法连接服务器是什么原因...
  4. linux中ed编辑器手册,脚本编辑器 - Navicat 15 for Linux 产品手册
  5. python安装虚拟环境没有activate_Python venv虚拟环境:Activate命令的作用
  6. android打开视频噔_android: 播放视频
  7. oracle中dlink使用,Oracle,MetaLink,中文使用指南
  8. python面试装饰器_Python测开面试题之装饰器
  9. axure9 邮件点击效果_总是收到无关的工作邮件?这个有意思的工具可以帮你消灭它们...
  10. Linux:网络编程