0Pricing
Python For Kids · Урок

Полиморфизм

Изучите продвинутые концепции ООП.

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

Полиморфизм

С возвращением на уроке по объектно-ориентированному программированию (ООП)! Сегодня мы рассмотрим полиморфизм в Python — мощную концепцию, которая позволяет объектам принимать разные формы.

Полиморфизм  — иллюстрация 1

Что такое полиморфизм?

Полиморфизм — это фундаментальная концепция ООП, позволяющая обращаться с объектами разных классов как с объектами общего суперкласса. Благодаря этому один и тот же метод может работать по-разному в зависимости от объекта, который его вызывает.

  • Определение: «Много форм» — способность разных объектов по-своему реагировать на один и тот же вызов метода.
  • Назначение: Повышает гибкость и совместимость кода, позволяя взаимозаменять объекты.

Давайте посмотрим, как работает полиморфизм в 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 и о том, как он позволяет объектам разных классов по-разному реагировать на одинаковые вызовы методов. Полиморфизм повышает гибкость и масштабируемость кода, упрощая его сопровождение и расширение. Продолжайте практиковаться: создавайте новые классы и методы, использующие полиморфное поведение, чтобы лучше закрепить понимание темы!

Полиморфизм  — иллюстрация 10

Часто задаваемые вопросы

Урок «Полиморфизм » бесплатный?

Да — полный текст урока «Полиморфизм » бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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 — локальная установка не требуется.

Все уроки этого курса

  1. Введение в ООП
  2. Создание классов и объектов
  3. Наследование
  4. Инкапсуляция
  5. Полиморфизм
← Назад к Python For Kids