Глава 14 · Создаём объекты реального мира
Полиморфизм
Одна и та же строка кода — .zvuk() — ведёт себя по-разному в зависимости от того, какой именно объект её вызвал.
Один вызов, разные результаты
Полиморфизм («много форм») — когда один и тот же вызов метода даёт разное поведение в зависимости от того, у объекта какого класса он вызван:
polimorfizm.py
class Sobaka:
def zvuk(self):
return "Гав!"
class Koshka:
def zvuk(self):
return "Мяу!"
class Korova:
def zvuk(self):
return "Му!"
zhivotnye = [Sobaka(), Koshka(), Korova()]
for zh in zhivotnye:
print(zh.zvuk()) # каждый раз вызывается СВОЯ версия zvuk()
Цикл не знает и не должен знать, с каким классом работает
Строка
zh.zvuk() внутри цикла ОДНА — ей не нужно проверять if isinstance(zh, Sobaka): ... и так для каждого класса. Именно в этом ценность полиморфизма: код, который ИСПОЛЬЗУЕТ объекты, остаётся простым и не растёт с каждым новым классом животного.Практика: полиморфизм
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки