Дрон Кодер — программирование для детей и взрослых в игровой форме. Начать бесплатно

Полиморфизм простыми словами

Полиморфизм — когда один и тот же вызов работает по-разному для разных объектов. Звучит сложно, а на деле удобно.

Один вызов — разное поведение

Если у разных классов есть метод с одинаковым именем, можно вызывать его, не зная точный тип объекта, — каждый ответит по-своему. Скажем, у кошки и собаки метод say() печатает «мяу» и «гав»: вызов один, поведение разное.

class Cat:
    def say(self): print('мяу')
class Dog:
    def say(self): print('гав')

for a in [Cat(), Dog()]:
    a.say()   # мяу / гав

Зачем это нужно

Полиморфизм позволяет писать код, который работает с разными объектами единообразно. Вы перебираете список животных и вызываете say() у каждого — не заботясь, кто там кот, а кто пёс. Код проще и легче расширяется новыми классами.

Связь с наследованием

Часто полиморфизм строят на наследовании: общий родитель задаёт метод, а потомки его переопределяют. Но в Python достаточно, чтобы у объектов просто был метод с нужным именем, — язык это допускает гибко.

Частые вопросы

Полиморфизм требует наследования? В Python не обязательно — достаточно одинакового имени метода.

Где это встречается? Повсюду: len() работает и со списком, и со строкой — это тоже полиморфизм.

Начать игру бесплатно
Попробуй прямо здесь
Уровень 1

Задание