对于静态语言来说,如果函数内需要的是Animal类型,则传入的对象必须是Animal类型或者它的子类,不然是调用不了其run方法的。

但是python属于一种动态语言,传入的不一定钥匙Animal类型,只需要保证传入的对象有一个run()方法就可以了

比如:

class Animal(object):def run(self):print('animal is running')class man(object):def run(self):print('man is running')
def runtwice(animal):animal.run()
a=Animal()
b=man()
c=runtwice(b)
print(a)

man和animal是不同的类,但是在调用runtwice函数时,参数指明了要用animal类型,但是我们传入的只是一个具有run方法的man类。然而这样也是可以实现的,这就是动态语言的鸭子类型,只要一个对象看起来像鸭子,跑起来像鸭子,那么它就可以被看作成鸭子。

python之动态性相关推荐

  1. python的动态性以及 使用__slots__

    正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.先定义class: class Student(object):pas ...

  2. python是动态_Python中的对象和动态性 [菜鸟的理解,高手莫入]

    当我们谈到python时常常会说python中一切都是对象,字符串是对象,整数型是对象,标准库中的对象当然也是对象,class本身也是对象,类型(type)也是对象. 但是初学的时候会错误地认为,既然 ...

  3. Python笔记 · Python语言的“动态性”

    尽管对于Python程序员来说已经司空见惯,但是当那些从非动态语言转过来的程序员初次看到形如self.xxx=xxx的语句就是在定义对象属性时往往会感到"离奇":一个未经声明的(类 ...

  4. 疯狂上涨的 Python,开发者应从 2.x 还是 3.x 着手?

    纵观各大编程语言在 2017 年的发展情况,我们会发现涌现出诸如 Go.Swift 这类后起之秀,而其中最为耀眼的当属 Python.之所以 Python 如此受捧,不仅仅是人工智能.数字科学领域的兴 ...

  5. 心得丨如何快速上手疯狂上涨的Python?

    纵观各大编程语言在 2017 年的发展情况,我们会发现涌现出诸如 Go.Swift 这类后起之秀,而其中最为耀眼的当属 Python. 快速上手 Python 有了一定的方向,接下来的问题及时如何快速 ...

  6. python程序跑得慢_Python程序慢的重要原因

    Python慢的重要原因: 1.python是动态性语言不是静态性语言 在python程序执行的时候,编译器不知道变量的类型. 2.python是解释性语言而不是编译性语言 解释型语言与编译型语言它们 ...

  7. python运行非常慢的解决-python为什么会运行慢

    我们之前一定听有人说过,python的执行速度比其他语言慢. python会运行慢的原因: 1.python是动态性语言不是静态性语言 这是说在python程序执行的时候,编译器不知道变量的类型.图1 ...

  8. 疯狂python讲义视频 百度云-疯狂Python讲义 PDF 含源码工具版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python编程.Python语法方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小124.3 MB,李刚编写,目前豆瓣.亚 ...

  9. 疯狂python讲义视频 百度云-疯狂的python讲义 PDF 下载

    资料简介: 本书全面而深入介绍了Python编程的相关内容,全书内容大致可分为四个部分,*部分系统讲解了Python的基本语法结构.函数编程.类和对象.模块和包.异常处理等:第二部分主要介绍Pytho ...

最新文章

  1. Oracle数据库密码过期重置
  2. Java版世界时钟示例
  3. XML 和 HTML中常用的转义字符
  4. wxWidgets:wxArchiveIterator类用法
  5. VTK:可视化之CollisionDetection
  6. Knative 实战:基于阿里云 Kafka 实现消息推送
  7. 出租车管理系统java_基于jsp的出租车管理系统-JavaEE实现出租车管理系统 - java项目源码...
  8. InnoDB文档笔记(三)—— Undo Log
  9. 阿里第一颗芯片问世!平头哥发布含光800:全球最强
  10. [Swift]LeetCode890. 查找和替换模式 | Find and Replace Pattern
  11. QQ在线客服代码(绝对强制对话框)
  12. QQ分享功能实现-Android
  13. Deecamp 面试翻车记录
  14. 百度 95 后程序员删库跑路被判刑,动机为工作内容变动及对领导不满,删库会给互联网公司带来哪些影响?
  15. 装配uwsgi和nginx rabbitMQ
  16. 机器学习 --- PCA
  17. 最新网站外链建设方法大全!
  18. S50(Mifare 1K)卡简介及存储控制原理
  19. U872新品上市 全面支持企业渡过寒冬
  20. 阿里云+python+flask+ngnix零基础从零开始搭建微信公众号进行后台AI开发全套教程

热门文章

  1. 服务器微信接口返回乱码,微信开发时,返回的消息中文乱码问题
  2. DSM-830源网荷系统控制终端(源网荷智能互动终端)-新型电力负荷控制终端(电力负荷管理终端装置)-互动式需求侧管理终端-专变采集终端的功能。DSM-830交互式需求侧管理终端(需求侧管理互动式终端
  3. Evernote international 剪藏
  4. Unity3D_Util_Editor_显示RectTransform的世界坐标和相对坐标
  5. HSB/HSV/HSL区别
  6. 数据库实验2 数据库安全性定义与检查
  7. D3.js的技术预研
  8. 【转】ARM GIC中断系列(三):gicv3架构基础
  9. 树莓派3B+ 安装 `ReSpeaker 4-Mics Pi HAT` 声卡,录音与播放
  10. pycharm遇坑指南(win32gui)