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

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

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

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

Если у разных классов есть метод с одинаковым именем, можно вызывать его, не зная точный тип объекта, — каждый ответит по-своему. Скажем, у кошки и собаки метод 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

Задание

Все обучающие игры «Дрон Кодер»

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

📈 Математика · алгебра и графики
📖 Русский язык