Показаны сообщения с ярлыком полиморфизм. Показать все сообщения
Показаны сообщения с ярлыком полиморфизм. Показать все сообщения

Полиморфизм и переопределение методов в ООП на Python


Переопределение метода родителя

Метод с таким же именем как в одном из родительских классов:


Может возникнуть необходимость вызывать этот метод так как-будто он неопределен в нашем классе, а определен в каком-то из родительских. Для этого есть функция super, которая принимает два аргумента: класс родителей которого мы хотим проверить и объект с которым мы хотим ассоциировать метод. Запись super(MyListm, self).pop() эквивалентна записи list.pop(self).

Полиморфизм в Haskell

Про функцию говорят, что она обладает полиморфным поведением, если она может быть вызвана на значениях разных типов. Например, оператор сложения эта функция, которая может быть вызвана на значениях типа Int, возвращая результат типа Int; она также может быть вызвана на значениях типа Double, возвращая результат типа Double. Таким образом сложение это полиморфный оператор. Выделяют два типа полиморфных функций:
  • параметрический полиморфизм - характеризуется тем, что код функций одинаков для всех типов на которых мы можем вызывать эту функцию;
  • специальный полиморфизм - предполагает, что для каждого типа, для которых вызов этой функции допустим имеется своя собственная реализация.
Пример с оператором сложения это как раз пример специального полиморфизма потому что на низком уровне сложение значений целочисленных и сложение значений с плавающей точкой это разные функции и код.