Java 爪哇及;Python类型检查

Java 爪哇及;Python类型检查,java,python,types,Java,Python,Types,Java和Python实现类型检查的方式到底有什么区别 那么它们是如何实现抽象数据类型的呢?Java就是这样做的 Python没有 Python是强动态类型的。您创建了一个对象,它将始终是该类型。但是,指向该对象的变量可以指向任何类型的任何对象,并且不必知道它指向的对象的类型 根据评论中的问题进行编辑: 这允许您定义一个类,该类可以被大多数需要字典、列表或其他类型的函数轻松使用。因此,如果我想创建一种特殊的列表,当您迭代它时,以自定义顺序返回对象,我所要做的就是声明一个类,该类支持\uuuu g

Java和Python实现类型检查的方式到底有什么区别

那么它们是如何实现抽象数据类型的呢?

Java就是这样做的

Python没有

Python是强动态类型的。您创建了一个对象,它将始终是该类型。但是,指向该对象的变量可以指向任何类型的任何对象,并且不必知道它指向的对象的类型

根据评论中的问题进行编辑:

这允许您定义一个类,该类可以被大多数需要字典、列表或其他类型的函数轻松使用。因此,如果我想创建一种特殊的列表,当您迭代它时,以自定义顺序返回对象,我所要做的就是声明一个类,该类支持
\uuuu getitem\uuuuuuuuuu
\uuuuuuu iter\uuuuuuuuuuuu
和一些其他方法,其他类将使用它,就像它是一个列表一样

有关Python中抽象基类的信息,请参见。在使用中,它们与Java中的抽象基类非常相似。

Java确实如此

Python没有

Python是强动态类型的。您创建了一个对象,它将始终是该类型。但是,指向该对象的变量可以指向任何类型的任何对象,并且不必知道它指向的对象的类型

根据评论中的问题进行编辑:

这允许您定义一个类,该类可以被大多数需要字典、列表或其他类型的函数轻松使用。因此,如果我想创建一种特殊的列表,当您迭代它时,以自定义顺序返回对象,我所要做的就是声明一个类,该类支持
\uuuu getitem\uuuuuuuuuu
\uuuuuuu iter\uuuuuuuuuuuu
和一些其他方法,其他类将使用它,就像它是一个列表一样


有关Python中抽象基类的信息,请参见。在使用上,它们与Java中的抽象基类非常相似。

Python与Ruby一样使用动态类型。Java显然是静态类型的,类型检查是在编译时完成的。

Python和Ruby一样使用动态类型。Java显然是静态类型的,类型检查是在编译时完成的。

这是一个特性。它给你更多的力量。您可以定义一个类似于列表的类,并且可以由任何接受列表的方法使用。您可以创建一个类似于文件的类,并允许您向需要文件对象的代码提供数据或从中捕获数据。错误。Python在运行时进行类型检查,Java在编译时进行类型检查。在Python中,名称是非类型化的,但Python对象是强类型的。“更好”在旁观者眼中。和您一样,我认为缺少强类型检查会导致更多错误——或者,在编写代码时确实如此。(也许我需要编译器作为支撑。)但我遇到过很多程序员,他们喜欢Python或PHP之类的非强类型的东西。Python是强类型的,只是不是静态类型。然而,PHP是弱类型和动态类型的。@大多数情况下,Python并不关心类型,只要对象支持正确的操作,并使用特殊方法,如
\uuuu getattr\uuuuu
\uu iter\uuuu
等。这是一项功能。它给你更多的力量。您可以定义一个类似于列表的类,并且可以由任何接受列表的方法使用。您可以创建一个类似于文件的类,并允许您向需要文件对象的代码提供数据或从中捕获数据。错误。Python在运行时进行类型检查,Java在编译时进行类型检查。在Python中,名称是非类型化的,但Python对象是强类型的。“更好”在旁观者眼中。和您一样,我认为缺少强类型检查会导致更多错误——或者,在编写代码时确实如此。(也许我需要编译器作为支撑。)但我遇到过很多程序员,他们喜欢Python或PHP之类的非强类型的东西。Python是强类型的,只是不是静态类型。然而,PHP是弱类型和动态类型的。@大多数情况下,Python不关心类型,只要对象支持正确的操作,并使用特殊方法,如
\uuuu getattr\uuuuuu
\uuu iter\uuuuu
等。