Java和Python类型检查
Java和Python在类型检查上有什么实际的区别呢?
那它们在实现抽象数据类型方面又有什么不同呢?
2 个回答
8
Python和Ruby一样,采用了一种叫做“鸭子类型”的动态类型风格。简单来说,就是在运行程序的时候,Python会根据你使用的对象的实际情况来判断它的类型。而Java则是静态类型的,也就是说在编译程序的时候就要检查类型。
2
Java 是这样做的。
而 Python 则不是。
Python 是一种强动态类型语言。你创建一个对象,它的类型就固定了。但是,指向这个对象的变量可以指向任何类型的对象,而且不需要知道它指向的对象是什么类型。
根据评论中的问题进行编辑:
这让你可以很容易地定义一个类,这个类可以被大多数期望字典、列表或其他类型的函数使用。所以,如果我想创建一种特殊的列表,当你遍历它时,可以按照自定义的顺序返回对象,我只需要声明一个支持 __getitem__
、__iter__
和其他一些方法的类,其他类就会像使用列表一样使用它。
关于 Python 中抽象基类的信息,可以查看 http://docs.python.org/glossary.html#term-abstract-base-class。在使用上,它们与 Java 中的抽象基类非常相似。