Полиморфизм
Изучите, как полиморфизм обеспечивает гибкость и динамичность кода
«Полиморфизм» — бесплатный урок Python Academy на CoddyKit. Это урок 4 из 6. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 6 уроков всего.
Введение в полиморфизм
Введение в полиморфизм
Полиморфизм — это основная концепция объектно-ориентированного программирования (ООП), которая позволяет рассматривать объекты разных классов как объекты общего суперкласса. Он обеспечивает гибкость и повторное использование кода.
В этом уроке Вы узнаете, как реализовать полиморфизм в Python с помощью методов и классов.

Что такое полиморфизм
Что такое полиморфизм
Полиморфизм позволяет методам разных классов иметь одно и то же имя, но разное поведение. Благодаря этому код становится более гибким и его проще расширять.
# Defining a superclass
class Animal:
# Method in the superclass
def speak(self):
print("Animal speaks") # Generic message for all animals
# Defining a subclass that overrides the speak method
class Dog(Animal):
def speak(self):
print("Dog barks") # Specific behavior for DogПолиморфизм с помощью методов
Полиморфизм с помощью методов
Методы с одинаковым именем в разных классах могут иметь разные реализации.
# Another subclass with its own implementation of the speak method
class Cat(Animal):
def speak(self):
print("Cat meows") # Specific behavior for Cat
# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal
def animal_sound(animal):
animal.speak() # Calls the appropriate speak method based on the object type
# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()
# Calling the function with different objects
animal_sound(dog) # Outputs: Dog barks
animal_sound(cat) # Outputs: Cat meowsПример полиморфизма методов
Полиморфизм с помощью методов
Методы с одинаковым именем в разных классах могут иметь разные реализации.
# Another subclass with its own implementation of the speak method
class Cat(Animal):
def speak(self):
print("Cat meows") # Specific behavior for Cat
# Function demonstrating polymorphism
# It can accept objects of any subclass of Animal
def animal_sound(animal):
animal.speak() # Calls the appropriate speak method based on the object type
# Creating objects of Dog and Cat
dog = Dog()
cat = Cat()
# Calling the function with different objects
animal_sound(dog) # Outputs: Dog barks
animal_sound(cat) # Outputs: Cat meowsПолиморфизм с помощью функций
Полиморфизм с помощью функций
Полиморфизм позволяет одной и той же функции работать с объектами разных типов.
# Defining two unrelated classes
class Bird:
def fly(self):
print("Bird flies") # Behavior specific to birds
class Plane:
def fly(self):
print("Plane flies") # Behavior specific to planes
# Function demonstrating polymorphism
# It can accept objects of both Bird and Plane
def flying_object(obj):
obj.fly() # Calls the appropriate fly method based on the object type
# Creating objects of Bird and Plane
bird = Bird()
plane = Plane()
# Calling the function with different objects
flying_object(bird) # Outputs: Bird flies
flying_object(plane) # Outputs: Plane fliesПолиморфизм с помощью наследования
Полиморфизм с помощью наследования
Полиморфизм часто реализуется через наследование, при котором подклассы переопределяют методы суперкласса.
# Superclass representing a generic vehicle
class Vehicle:
def start(self):
print("Vehicle starts") # Generic behavior for all vehicles
# Subclass representing a specific type of vehicle
class Car(Vehicle):
def start(self):
print("Car starts") # Specific behavior for cars
# Subclass representing another specific type of vehicle
class Bike(Vehicle):
def start(self):
print("Bike starts") # Specific behavior for bikes
# Function demonstrating polymorphism
# It can accept objects of any subclass of Vehicle
def start_vehicle(vehicle):
vehicle.start() # Calls the appropriate start method based on the object type
# Creating objects of Car and Bike
car = Car()
bike = Bike()
# Calling the function with different objects
start_vehicle(car) # Outputs: Car starts
start_vehicle(bike) # Outputs: Bike startsПреимущества полиморфизма
Преимущества полиморфизма
Полиморфизм даёт несколько преимуществ:
- Повторное использование и гибкость кода.
- Повышение читаемости и структурированности кода.
- Поощрение использования общих интерфейсов.
Пример из реального мира
Пример из реального мира
Рассмотрим пример полиморфизма из реального мира.
# Real-world example of polymorphism
class Developer:
def work(self):
print("Writing code") # Specific task for developers
class Designer:
def work(self):
print("Designing user interfaces") # Specific task for designers
# Function demonstrating polymorphism
# It can accept objects of both Developer and Designer
def workday(employee):
employee.work() # Calls the appropriate work method based on the object type
# Creating objects of Developer and Designer
developer = Developer()
designer = Designer()
# Calling the function with different objects
workday(developer) # Outputs: Writing code
workday(designer) # Outputs: Designing user interfacesРаспространённые ошибки при работе с полиморфизмом
Распространённые ошибки при работе с полиморфизмом
Вот несколько ошибок, которых следует избегать:
- Забыть переопределить методы в подклассах, когда это необходимо.
- Путаница в порядке разрешения методов (MRO) при множественном наследовании.
- Необоснованное использование полиморфизма для простых задач.
Что мы узнали
Что мы узнали
В этом уроке Вы узнали:
- Что такое полиморфизм и как он работает в Python.
- Как реализовать полиморфизм с помощью методов и наследования.
- О преимуществах использования полиморфизма в ООП.
Отличная работа! Переходим к следующей теме.

Часто задаваемые вопросы
Урок «Полиморфизм» бесплатный?
Да — полный текст урока «Полиморфизм» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 6 уроков всего.
Чему я научусь в уроке «Полиморфизм»?
Изучите, как полиморфизм обеспечивает гибкость и динамичность кода Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 6.
Сколько времени занимает урок «Полиморфизм»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Классы и объекты
- Атрибуты и методы
- Наследование
- Полиморфизм
- Инкапсуляция и абстракция
- Специальные методы (__str__, __repr__ и другие)