Sobes.tech
Назад к вопросам
Junior — Middle
46

Можете объяснить, что означает способность объектов проявлять разные поведения в зависимости от контекста?

Компании, где спрашивали
Стилсофт
Вкусно и точкаВкусно и точка

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Речь о полиморфизме: один и тот же интерфейс может работать с объектами разных типов, а поведение определяется конкретным классом. Это позволяет писать более гибкий и расширяемый код. В Python это часто реализуется через переопределение методов и единый интерфейс у разных классов.

Определение:

Полиморфизм — это способность объектов разных классов по-разному реагировать на один и тот же вызов метода или операцию. Важна не конкретная реализация в коде вызова, а общий контракт: у объектов есть метод с одинаковым именем, но поведение зависит от их типа.

Пример использования:

Допустим, есть разные фигуры, и у каждой свой способ вычисления площади. Код, который работает с фигурами, вызывает один и тот же метод area(), не зная заранее, какой именно объект передан.

class Circle:
    def area(self):
        return 3.14 * 5 ** 2

class Rectangle:
    def area(self):
        return 4 * 6

def print_area(shape):
    print(shape.area())

print_area(Circle())
print_area(Rectangle())

Пояснение кода:

Код не требует отдельной сложной логики: здесь один и тот же вызов shape.area() работает для разных объектов.
Шаги такие: сначала создаются два класса с методом area(), затем функция print_area принимает любой объект с таким методом, после чего при вызове выбирается реализация конкретного класса.
Именно это и демонстрирует полиморфизм: общий интерфейс, разное поведение.

Ключевые моменты:

  • Один интерфейс — несколько реализаций.
  • Код вызывающей стороны не должен знать точный тип объекта.
  • В Python это обычно достигается через одинаковые методы у разных классов.
  • Полиморфизм повышает расширяемость и снижает связанность кода.
  • Часто используется вместе с наследованием, но может работать и без него, если объект “ведёт себя” как ожидается.