Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpIhPlm 34 of 174 menu
◀ ▶

Полиморфизм в ООП в 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.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить