gpt4 book ai didi

python - 解释多态性

转载 作者:太空狗 更新时间:2023-10-29 17:35:39 26 4
gpt4 key购买 nike

什么是多态?我不确定我是否理解正确。

在 Python 范围内,我从中得到的是我可以按如下方式定义参数:

def blah (x, y)

无需指定类型,这与另一种语言(如 Java)相反,后者看起来更像是:

public void blah (int x, string y)

我做对了吗?

最佳答案

注意不同的人使用不同的术语;特别是 object oriented community 之间经常存在裂痕。和(其余的)programming language theory community .

一般来说,多态性是指一个方法或函数能够应对不同类型的输入。例如,Integer 类中的 add 方法(或 + 运算符)可能执行整数加法,而 add Float 类中的方法执行浮点加法,Bignum 类中的 add 方法对任意大小的数字执行正确的运算.多态性是在不知道对象是什么类型的数字的情况下调用对象的 add 方法的能力。

  • 一种特殊的多态性,在函数式社区中通常称为参数多态性,在 OOP 社区中通常称为泛型编程,它能够在不关心对象的精确类型的情况下对对象执行某些操作。比如反转一个列表,不需要关心列表元素的类型,只需要知道它是一个列表即可。因此,您可以编写通用的(在这个意义上)列表反转代码:它在整数、字符串、小部件、任意对象等列表上的工作方式相同。但是您不能编写以通用方式添加列表元素的代码,因为元素被解释为数字的方式取决于它们的类型。

  • 另一种多态性,在函数式社区中通常称为临时多态性或(至少对于它的某些形式)泛型编程,并且在 OOP 社区中通常称为子类型多态性(尽管这在某种程度上限制了概念) ,它能够让单个方法或函数根据其参数的精确类型(或者,对于方法,其方法被调用的对象的类型)表现不同。上面的 add 示例是临时多态性。在动态类型语言中,这种能力是不言而喻的;静态类型语言倾向于(但不必)有限制,例如要求参数是某个特定类的子类 (Addable)。

多态性并不是在定义函数时必须指定类型。这与静态类型和动态类型更相关,尽管它不是问题的内在部分。动态类型语言不需要类型声明,而静态类型语言通常需要一些类型声明(从 Java 中的相当多到 ML 中几乎不需要)。

关于python - 解释多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3322318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com