Python的多态性并不是动态类型

什么是多态性?在Python语言中,我能想到的是可以这样定义参数:

def sum(x, y)

它不用指定参数类型,如果换了其他语言,比如JAVA,可能是这样的:

public void sum(int x, int y)

难道这就是所谓的多态性吗?

不!不需要指定类型是动态类型语言的特点。

通常来说,多态性指的是一个函数或方法,能够处理不同类型的输入。

例如,对于add函数(或者是'+'操作符),在整数类中,执行的是整数的加法。在浮点型类中,执行的是浮点型数的加法。在不知道相加对象类型的情况下,多态性让add函数能够正常运行。

再比如,在Python中,对一个列表中的元素进行排序,使用list.sort()函数,这时,sort()也不需要知道列表中元素是整型、浮点型或字符串等。当然,需要注意的是,多态性虽然不关心输入的类型,但并非意味着对任意类型的输入都能够正常运行,因为complex numbers, dict, 和range就无法进行排序,也就是说如果列表中含有复数,即使没有虚数部分,也会报错。

举一个生活中的例子,证明多态性:

定义一个speak()函数,在现实中就相当于喇叭。输入对象可以是人及各种动物。当喇叭(speak()函数)面对小猫的时,发出的是‘‘喵’’,面对小狗的时,发出的是‘‘woof’’……

多态性有什么好处呢?

其实很容易猜到,如果没有多态性,那么speak()函数会有多么臃肿,有多少种不同对象类型的输入,就有多少个speak()函数,而操作确实相同的。

多态性在不同语言都有什么样的表现呢?

在JAVA中,是对接口interface的实现。

在Python中,由于它本身就是动态类型语言,对输入参数类型没有明确,因此也实现了多态性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,234评论 1 118
  • 要点: 函数式编程:注意不是“函数编程”,多了一个“式” 模块:如何使用模块 面向对象编程:面向对象的概念、属性、...
    victorsungo阅读 5,525评论 0 6
  • 前言 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打...
    依依玖玥阅读 8,950评论 6 37
  • 文/Bruce.Liu1 1.Python前世今生 1.1.Python历史 Python的创始人: Guido ...
    BruceLiu1阅读 14,196评论 3 119
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,846评论 0 5

友情链接更多精彩内容