Полиморфизм в Python
Полиморфизм в объектно-ориентированном программировании
Полиморфизм - это один из ключевых принципов объектно-ориентированного программирования (ООП), который позволяет объектам разных типов вести себя одинаково при выполнении определенной операции. Он позволяет использовать один и тот же метод или функцию для работы с объектами, не зависимо от их конкретного типа.
В языке программирования Python полиморфизм реализуется через концепцию динамической типизации. Это означает, что типы переменных определяются автоматически во время выполнения программы. При этом объекты могут быть разных типов, но если они обладают совместимыми методами или функциями, то могут быть использованы единообразно.
Для иллюстрации рассмотрим следующий пример кода:
class Shape:
def area(self):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius * self.radius
В этом примере у нас есть базовый класс "Shape" с методом "area", который не имеет реализации. Затем у нас есть классы "Rectangle" и "Circle", которые наследуются от базового класса "Shape" и переопределяют его метод "area". У класса "Rectangle" определены два дополнительных атрибута - "width" (ширина) и "height" (высота), а у класса "Circle" - атрибут "radius" (радиус).
Теперь мы можем создать объекты разных типов и вызывать для них метод "area":
rect = Rectangle(5, 10)
print(rect.area()) # Вывод: 50
circle = Circle(7)
print(circle.area()) # Вывод: 153.86
В этом примере мы создаем объект "rect" типа "Rectangle" с шириной 5 и высотой 10. Затем мы вызываем для него метод "area" и получаем площадь прямоугольника, равную 50. Затем мы создаем объект "circle" типа "Circle" с радиусом 7 и вызываем для него метод "area", получая площадь окружности, приближенно равную 153.86.
Обратите внимание, что мы вызываем один и тот же метод "area" для разных типов объектов "rect" и "circle". Это возможно благодаря полиморфизму - метод "area" автоматически выбирается в соответствии с типом объекта.
Таким образом, полиморфизм в языке программирования Python позволяет нам обрабатывать разные типы объектов единообразно, что делает код более гибким и позволяет упростить его структуру.