Где проявляется полиморфизм при вызове одного метода

Полиморфизм проявляется при одинаковом вызове shape.area() для объектов разных классов. Конкретная реализация выбирается по объекту, а вызывающий код использует общий контракт метода.

Короткий ответ

Что ответить на собеседовании

Полиморфизм проявляется при одинаковом вызове shape.area() для объектов разных классов. Конкретная реализация выбирается по объекту, а вызывающий код использует общий контракт метода.

Подробный разбор

Ответ с пояснениями

Условие

В Python классы Square и Rectangle реализуют метод area(). Квадрат со стороной 3 и прямоугольник 2×5 находятся в одном списке. Покажите полиморфный вызов и объясните, почему для каждого элемента не нужен if по типу.

Ответ

Полиморфизм проявляется при одинаковом вызове shape.area() для объектов разных классов. Конкретная реализация выбирается по объекту, а вызывающий код использует общий контракт метода.

class Square:
    def __init__(self, side):
        self.side = side

    def area(self):
        return self.side ** 2

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

shapes = [Square(3), Rectangle(2, 5)]
assert [shape.area() for shape in shapes] == [9, 10]

Обе реализации возвращают площадь, хотя хранят разные данные. Общий базовый класс здесь не обязателен: достаточно совместимого поведения. Простое наличие двух классов ещё не демонстрирует полиморфизм; важен их взаимозаменяемый вызов через один интерфейс.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее