Полиморфизм в ООП в Python
Полиморфизм - это следствие наследования. Это свойство унаследованных классов иметь одинаковые методы, которые будут работать по-разному в контексте объектов.
Давайте посмотрим на примере.
Сделаем класс Figure с методом
get_square, который будет
возвращать площадь фигуры:
class Figure:
def get_square(self):
return 0
Сделаем классы конкретных фигур,
наследующие от Figure.
Переопределим в каждом метод
get_square:
class Square(Figure):
def __init__(self, side):
self.side = side
def get_square(self):
return self.side * self.side
class Triangle(Figure):
def __init__(self, base, height):
self.base = base
self.height = height
def get_square(self):
return self.base * self.height / 2
class Trapezoid(Figure):
def __init__(self, base1, base2, height):
self.base1 = base1
self.base2 = base2
self.height = height
def get_square(self):
return (self.base1 + self.base2) * self.height / 2
Создадим объекты фигур и вызовем
у каждого один и тот же метод
get_square:
square = Square(4)
triangle = Triangle(3, 6)
trapezoid = Trapezoid(2, 4, 5)
print(square.get_square())
print(triangle.get_square())
print(trapezoid.get_square())
Имя метода одно и то же, но результат зависит от класса объекта. Так и работает полиморфизм.
Не подсматривая в теорию расскажите своими словами о том, как вы поняли значения понятия "полиморфизм".
Сделайте класс Animal с методом
speak, возвращающим пустую строку.
Сделайте классы Dog и Cat,
наследующие от Animal.
Переопределите speak так, чтобы
Dog возвращал 'woof',
а Cat - 'meow'.
Создайте объекты и вызовите у них
speak.