Можете объяснить, что означает способность объектов проявлять разные поведения в зависимости от контекста?
Ответ от нейросети
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 это обычно достигается через одинаковые методы у разных классов.
- Полиморфизм повышает расширяемость и снижает связанность кода.
- Часто используется вместе с наследованием, но может работать и без него, если объект “ведёт себя” как ожидается.