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

Что такое полиморфизм?
Полиморфизм — это фундаментальная концепция ООП, позволяющая обращаться с объектами разных классов как с объектами общего суперкласса. Благодаря этому один и тот же метод может работать по-разному в зависимости от объекта, который его вызывает.
- Определение: «Много форм» — способность разных объектов по-своему реагировать на один и тот же вызов метода.
- Назначение: Повышает гибкость и совместимость кода, позволяя взаимозаменять объекты.
Давайте посмотрим, как работает полиморфизм в Python!
Реализация полиморфизма
Полиморфизм в Python можно реализовать с помощью переопределения методов и встроенных функций, работающих с разными типами объектов.
- Переопределение методов: Повторное определение в дочернем классе метода, который уже был определён в родительском классе.
- Встроенные функции: Такие функции, как
len(), работающие с различными типами данных.
Рассмотрим переопределение методов подробнее.
Переопределение методов
Переопределение методов позволяет дочернему классу предоставить собственную реализацию метода, уже определённого в родительском классе. Это один из ключевых аспектов полиморфизма.
Пример:
# Defines the Animal parent class with a speak method
class Animal:
def speak(self):
print("The animal makes a sound.") # Generic speak method
Создание дочерних классов с переопределёнными методами
Создадим дочерние классы, наследующие Animal, и переопределим метод speak, чтобы задать особое поведение для каждого класса.
Пример:
# Defines the Dog child class inheriting from Animal
class Dog(Animal):
def speak(self):
print("The dog barks.") # Overridden speak method
# Defines the Cat child class inheriting from Animal
class Cat(Animal):
def speak(self):
print("The cat meows.") # Overridden speak method
Использование полиморфизма с переопределёнными методами
Теперь создадим объекты дочерних классов и посмотрим, как они демонстрируют разное поведение, используя одно и то же имя метода.
Пример:
# Creates objects of Dog and Cat classes
dog = Dog()
cat = Cat()
# Calls the speak method on both objects
dog.speak() # Output: The dog barks.
cat.speak() # Output: The cat meows.
Полиморфизм со встроенными функциями
Полиморфизм не ограничивается определёнными пользователем классами. Встроенные функции Python, такие как len(), работают с разными типами данных, демонстрируя полиморфное поведение.
Пример:
# Uses len() with a list
my_list = [1, 2, 3, 4]
print(len(my_list)) # Output: 4
# Uses len() with a string
my_string = "Hello"
print(len(my_string)) # Output: 5
# Uses len() with a dictionary
my_dict = {"a": 1, "b": 2}
print(len(my_dict)) # Output: 2
Пример программы: вычисление площади фигур
Создадим программу, вычисляющую площадь разных фигур с помощью полиморфизма. Определим родительский класс Shape и дочерние классы Circle и Rectangle, которые переопределяют метод area.
Код:
# Defines the Shape parent class with an area method
class Shape:
def area(self):
pass # Placeholder method
# Defines the Circle child class inheriting from Shape
class Circle(Shape):
def __init__(self, radius):
self.radius = radius # Sets the radius of the circle
def area(self):
return 3.14 * self.radius ** 2 # Calculates area of the circle
# Defines the Rectangle child class inheriting from Shape
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width # Sets the width of the rectangle
self.height = height # Sets the height of the rectangle
def area(self):
return self.width * self.height # Calculates area of the rectangle
# Creates objects of Circle and Rectangle classes
circle = Circle(5)
rectangle = Rectangle(4, 6)
# Calculates and prints areas using polymorphism
print("Circle Area:", circle.area()) # Output: Circle Area: 78.5
print("Rectangle Area:", rectangle.area()) # Output: Rectangle Area: 24
# Defines the Vehicle parent class with a move method
class Vehicle:
def move(self):
print("The vehicle moves.")
# Defines the Bicycle child class inheriting from Vehicle
class Bicycle(Vehicle):
def move(self):
print("The bicycle pedals forward.")
# Defines the Airplane child class inheriting from Vehicle
class Airplane(Vehicle):
def move(self):
print("The airplane flies in the sky.")
# Creates objects of Bicycle and Airplane classes
bike = Bicycle()
plane = Airplane()
# Calls the move method on both objects
bike.move()
plane.move()
Отличная работа!
Вы узнали о полиморфизме в Python и о том, как он позволяет объектам разных классов по-разному реагировать на одинаковые вызовы методов. Полиморфизм повышает гибкость и масштабируемость кода, упрощая его сопровождение и расширение. Продолжайте практиковаться: создавайте новые классы и методы, использующие полиморфное поведение, чтобы лучше закрепить понимание темы!

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