В чем разница между тем, как Java и Python реализуют проверку типов?
А как они реализуют абстрактные типы данных?
Java делает.
Python этого не делает.
Python сильно динамически типизирован. Вы создаете объект, и он всегда будет такого типа. Однако переменная, указывающая на этот объект, может быть указана на любой объект любого типа и не должна знать, на какой тип объекта он указывает.
Редактировать на основе вопросов в комментариях:
Это позволяет вам определить класс, который может использоваться большинством функций, которые ожидают, что словарь или список или другой тип очень легко. Поэтому, если я хочу создать особый вид списка, то при повторении его, возвращает объекты в пользовательском порядке, все, что мне нужно сделать, это объявить класс, который поддерживает __getitem__
, __iter__
и несколько других методов, и другие классы будут использовать его так же, как если бы это был список.
Информацию об абстрактных базовых классах в Python см. По адресу http://docs.python.org/glossary.html#term-abstract-base-class. При использовании они очень похожи на абстрактные базовые классы в Java.
Python, как и Ruby, использует Duck Typing, который является стилем динамической типизации. Java, очевидно, статически типизирован, и проверка типов выполняется во время компиляции.